[英]Split a string (101500810100015835001000) based on character using excel
[英]Split string using Excel
我有一个字符串,格式如下:
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命令提取日期:
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
任何人都有更好的解决方案吗?
这是我的一些代码:
如何获得“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个字符年份的日期:
=TRIM(MID(A1,FIND("/",A1)-2,8))
我建议从“数据”选项卡中运行“文本到列”。 选择“分隔”,并将空格指定为分隔符。 这会将您的字符串放入五列,第三列是日期,然后您可以直接自由使用数据。
否则,我会看看Lajos示例:( =TRIM(MID(A1,FIND("!^!",SUBSTITUTE(A1," ","!^!",2)),8))
)或John的回答。
如果你可以使用宏UDF,这很简单。
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是要拆分的字符串,sep是要拆分的字符 - 在您的情况下为“ - ” - n是您要查找的列号。 所以= STR_SPLIT(A1,“”,3)将返回例如日期。
您可以通过转到“数据”>“文本到列”并将空格用作分隔符,将每个部分拆分为Excel中的列。
您的日期在所有示例中的第二个和第三个空格之间。 您可以用“!^!”替换第三个空格 例如,然后获取子字符串,直到第一次出现“!^!”。 之后,您只需要在第二个空格后提取子字符串。 请在这里阅读更多内容。
即使年份有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))), “公平”, “”))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.