使用Excel分割string

我有一个以下格式的string:

StockCode Country Date Price equity 

例如:

  • 1 hk 10/31/12 C70.5 equity
  • 101 hk 11/21/13 P63 equity
  • 388 hk 10/17/12 P100 equity

我可以通过这个Excel命令提取date:

 LEFT(RIGHT(RIGHT(LEFT(A1,LEN(A1)-7),LEN(LEFT(A1,LEN(A1)-7))-FIND(" ",A1)), LEN(RIGHT(LEFT(A1,LEN(A1)-7),LEN(LEFT(A1,LEN(A1)-7))-FIND(" ",A1)))-FIND(" ", RIGHT(LEFT(A1,LEN(A1)-7),LEN(LEFT(A1,LEN(A1)-7))-FIND(" ",A1)))),FIND(" ", RIGHT(RIGHT(LEFT(A1,LEN(A1)-7),LEN(LEFT(A1,LEN(A1)-7))-FIND(" ",A1)), LEN(RIGHT(LEFT(A1,LEN(A1)-7),LEN(LEFT(A1,LEN(A1)-7))-FIND(" ",A1)))-FIND(" ", RIGHT(LEFT(A1,LEN(A1)-7),LEN(LEFT(A1,LEN(A1)-7))-FIND(" ",A1)))))) 

(可读性换行符)

结果: 10/31/12

任何人有更好的解决scheme呢?

这里是我的一些代码:

  • 如何获得“C”和“P”:

     TRIM(MID(A1,IFERROR(FIND("P",A1),FIND("C",A1)),1)) 
  • 如何获得执行价格:

     TRIM(SUBSTITUTE(RIGHT(A1,LEN(A1)-IFERROR(FIND("P",A1), FIND("C",A1))),"equity","")) 

试试这个,我认为它应该适用于2个字符年份的所有date:

 =TRIM(MID(A1,FIND("/",A1)-2,8)) 

我build议从“数据”选项卡中运行“文本到列”。 select分隔符,并指定空格作为分隔符。 这将把你的string放在五列中,第三列是date,然后你可以直接自由的使用数据。

否则,我会看看Lajos示例:( =TRIM(MID(A1,FIND("!^!",SUBSTITUTE(A1," ","!^!",2)),8)) )或John的答案。

如果你可以使用macrosUDF,这很简单。

 Function STR_SPLIT(str as String, sep as String, n as Long) Dim Arr() as String Arr = Split(str, sep) STR_SPLIT = Arr(n - 1) End Function 

str是要分割的string,sep是要分割的字符 – “”在你的情况下 – n是你正在寻找的列号。 所以= STR_SPLIT(A1,“”,3)会返回例如的date。

您可以将每个部分拆分为Excel中的列,方法是转到“数据”>“文本到列”并将空格用作分隔符。

你的date在所有例子中的第二个和第三个空间之间。 你可以用“!^!”代替你的第三个空格 例如,然后获取子string,直到第一次出现“!^!”。 之后,你只需要提取第二个空格后的子string。 请在这里阅读更多。

这个公式也应该给出要求的结果,即使年份有4个字符

=TRIM(MID(SUBSTITUTE(A1," ",REPT(" ",99)),198,99))

谢谢约翰

这里是我的一些代码:

如何获得“C”和“P”:

TRIM(MID(A1,IFERROR(FIND( “P”,A1),FIND( “C”,A1)),1))

如何获得执行价格:

TRIM(SUBSTITUTE(RIGHT(A1,LEN(A1)-IFERROR(FIND( “P”,A1),FIND( “C”,A1))), “公平”, “”))