使用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))), “公平”, “”))