10

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

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

7 回答 7

13

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

=TRIM(MID(A1,FIND("/",A1)-2,8))
于 2012-10-10T13:58:07.613 回答
4

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

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

于 2012-10-10T14:12:50.240 回答
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) 将返回日期。

于 2012-10-10T18:05:23.220 回答
3

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

于 2013-04-05T13:47:58.007 回答
1

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

于 2012-10-10T13:57:08.133 回答
1

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

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

于 2012-10-10T14:27:22.297 回答
0

谢谢约翰

这是我的一些代码:

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

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

如何获得行使价:

修剪(替代(右(A1,LEN(A1)-IFERROR(查找(“P”,A1),查找(“C”,A1))),“股权”,“”))

于 2012-10-10T14:28:14.990 回答