有条件地提取 Excel 中的部分文本
Extract part of text in Excel with condition
我知道这个问题似乎多余但找不到答案。我有一个文本字符串,例如:
A-B-C-D-E-F
我只想提取以“-”分隔的前 4 项。结果应该是
A-B-C-D
或者,我也希望只提取第 3 项:
C
我一直在尝试 MID 和 SEARCH 功能,但没有成功。
任何帮助将不胜感激。
使用 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:
所以,这就是我 尝试过的,
• 单元格 B1
中使用的公式
=TEXTJOIN("-",,TAKE(TEXTSPLIT(A1,"-"),,4))
• 单元格 D1
中使用的公式
=TEXTJOIN("-",,DROP(TEXTSPLIT(A1,"-"),,-2))
• 单元格 C1
中使用的公式
=TEXTJOIN("-",,INDEX(TEXTSPLIT(A1,"-"),,3))
注意: 上面显示的公式适用于 O365 用户,仅限 Insiders 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 在评论中提到,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))
对于 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)
我知道这个问题似乎多余但找不到答案。我有一个文本字符串,例如:
A-B-C-D-E-F
我只想提取以“-”分隔的前 4 项。结果应该是
A-B-C-D
或者,我也希望只提取第 3 项:
C
我一直在尝试 MID 和 SEARCH 功能,但没有成功。 任何帮助将不胜感激。
使用 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:
所以,这就是我 尝试过的,
• 单元格 B1
中使用的公式=TEXTJOIN("-",,TAKE(TEXTSPLIT(A1,"-"),,4))
• 单元格 D1
中使用的公式=TEXTJOIN("-",,DROP(TEXTSPLIT(A1,"-"),,-2))
• 单元格 C1
中使用的公式=TEXTJOIN("-",,INDEX(TEXTSPLIT(A1,"-"),,3))
注意: 上面显示的公式适用于 O365 用户,仅限 Insiders 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 在评论中提到,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))
对于 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)