使用Excel拆分字符串

时间:2012-10-10 13:47:49

标签: excel split

我有一个字符串格式如下:

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",""))
    

7 个答案:

答案 0 :(得分:13)

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

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

答案 1 :(得分:4)

我建议从“数据”标签中运行“文本到列”。选择“分隔”,并将空格指定为分隔符。这会将您的字符串放入五列,第三列是日期,然后您可以直接自由使用数据。

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

答案 2 :(得分:4)

如果你可以使用宏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)将返回例如日期。

答案 3 :(得分:3)

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

答案 4 :(得分:1)

您的日期在所有示例中的第二个和第三个空格之间。您可以用“!^!”替换第三个空格例如,然后获取子字符串,直到第一次出现“!^!”。之后,您只需要在第二个空格后提取子字符串。请阅读更多here

答案 5 :(得分:1)

此公式还应提供所需的结果,即使年份有4个字符

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

答案 6 :(得分:0)

感谢约翰

这是我的一些代码:

如何获得“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))), “公平”, “”))