【问题标题】:Extract part of text in Excel with condition使用条件提取Excel中的部分文本
【发布时间】:2022-06-18 02:27:07
【问题描述】:

我知道这个问题似乎是多余的,但找不到答案。我有一个文本字符串,例如:

A-B-C-D-E-F

我想只提取用“-”分隔的前 4 个项目。结果应该是

A-B-C-D

或者,我也希望只提取第三项:

C

我一直在尝试 MID 和 SEARCH 功能,但没有成功。 任何帮助将不胜感激。

【问题讨论】:

  • 你有什么版本的 Excel?
  • 我使用的是 V16.60 Office 365 Mac

标签: excel string text split


【解决方案1】:

使用 TEXTSPLIT(在撰写本文时仅适用于 Office 365 Insider Beta 频道)

=TEXTJOIN("-",TRUE,INDEX(TEXTSPLIT(A1,"-"),1,{1,2,3,4}))

将第三个 {1,2,3,4} 更改为 3

如果一个人没有 TEXTSPLIT 但有 TEXTJOIN 并且在 PC 上,那么:

=TEXTJOIN("-",TRUE,INDEX(FILTERXML("<a><b>"&SUBSTITUTE(A1,"-","</b><b>")&"</b></a>","//b"),1,{1,2,3,4}))

如果没有 TEXTJOIN,它将需要 vba。比如这个模仿 TEXTJOIN 的 UDF:MS Excel - Concat with a delimiter

【讨论】:

  • 先生,INDEX() 很好,但您也可以使用TAKE()DROP()
  • 是的,还在学习新公式。
  • 先生,不要这样说,你在学习这是不可能的,我一直在关注你的解决方案,你就像 Excel Guru。先生,我看到您提供 Excel 和 VBA 解决方案,先生您对 Power Query 不感兴趣?
  • 非常感谢@ScottCraner!不幸的是,我收到一条错误消息 #NAME?。也许这来自我的 Excel 版本?我在 Mac V16.60 office 365 上。
  • 虽然我有 TEXTJOIN,但我似乎也没有 TEXTSPLIT
【解决方案2】:

所以,这就是我尝试过的

B1

单元格中使用的公式
=TEXTJOIN("-",,TAKE(TEXTSPLIT(A1,"-"),,4))

D1

单元格中使用的公式
=TEXTJOIN("-",,DROP(TEXTSPLIT(A1,"-"),,-2))

C1

单元格中使用的公式
=TEXTJOIN("-",,INDEX(TEXTSPLIT(A1,"-"),,3))

注意:上面显示的公式仅适用于 O365 用户、Insider Beta 频道用户!


但是,如果您可以访问 Excel 2019,则可以使用 TEXTJOIN()CONCAT()

B9

单元格中使用的公式
=SUBSTITUTE(CONCAT("-"&INDEX(FILTERXML("<t><s>"&SUBSTITUTE(A9,"-","</s><s>")&"</s></t>","//s"),ROW(A1:A4))),"-","",1)

C9

单元格中使用的公式
=SUBSTITUTE(CONCAT("-"&INDEX(FILTERXML("<t><s>"&SUBSTITUTE(A9,"-","</s><s>")&"</s></t>","//s"),3)),"-","",1)

由于 OP 在 cmets 中提到,OP 在 MAC 中使用的是 O365,因此这里是一个更新。

B1

单元格中使用的公式
=TEXTJOIN("-",,TRIM(MID(SUBSTITUTE(A1,"-",REPT(" ",100)),COLUMN(A1:D1)*99-98,99)))

C1

单元格中使用的公式
=TRIM(MID(SUBSTITUTE(A1,"-",REPT(" ",100)),COLUMN(C1)*99-98,99))

或者,

D1

单元格中使用的公式
=TRIM(MID(SUBSTITUTE(A1,"-",REPT(" ",100)),200,100))

【讨论】:

    【解决方案3】:

    对于 Excel MAC 及更早版本:

    提取前四个:

    =LEFT(A1,FIND(CHAR(1),SUBSTITUTE(A1,"-",CHAR(1),4))-1)
    

    提取第三个:

    =MID(A1,FIND(CHAR(1),SUBSTITUTE(A1,"-",CHAR(1),2))+1, FIND(CHAR(1),SUBSTITUTE(A1,"-",CHAR(1),3))-FIND(CHAR(1),SUBSTITUTE(A1,"-",CHAR(1),2))-1)
    

    【讨论】:

      【解决方案4】:

      如果分小步进行,则更容易理解(现在和将来)。
      假设源数据在 A2 中:
      在 B2:=FIND("-",$A2)
      在 C2 中:=FIND("-",$A2,B2+1)
      在 D2、E2 中:从 C2 复制
      然后在 F2:=LEFT(A2,E2-1)
      可以将所有这些都放入一个公式中,但这更容易出错。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-06-18
        • 1970-01-01
        • 2018-08-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多