如何在 Excel 中提取多个分隔符之间的文本?

如何在 Excel 中提取多个分隔符之间的文本?
原文 我想要的是
xxxa - 长衬衫 - 白色 - S 长衬衫 - 白色
xxxb - 长衬衫 - 白金 - M 长衬衫 - 白金
xxxxc - 裤子 - 金色 - 31 裤子 - 金色
xxxd - 高帮皮鞋 - 07 高帮皮鞋
xxd——其他材料 其他材料

以上是示例数据。我想提取第一个“-”和最后一个“-”之间的文本,正如我在“我想要什么”一栏中描述的那样。

我使用的公式如下: =SUBSTITUTE(MID(K132, FIND("-", K132) + 1, FIND("-", K132, FIND("-", K132) + 1) - FIND("-", K132) - 1), "-", "", 1) & "-" & SUBSTITUTE(MID(K132, FIND("-", K132, FIND("-", K132) + 1) + 1, FIND("-", K132, FIND("-", K132, FIND("-", K132) + 1) - FIND("-", K132, FIND("-", K132) + 1) - 1), "-", "", 1)

但是,最后两行不起作用。我该如何编辑它?

答案1

如果您有365
并且您想要的是返回第一个和最后一个连字符之间的文本
,或者如果没有最后一个连字符,则返回第一个连字符之后的文本

=LET(
    first, TEXTAFTER(A2, "-", 1, , , A2),
    last, TEXTBEFORE(first, "-", -1, , , first),
    TRIM(last)
)

在此处输入图片描述

答案2

此公式适用于 Excel 365:

=MID(K132,FIND("-",K132)+1,IF(LEN(K132)-LEN(SUBSTITUTE(K132,"-",""))>1,LEN(K132)-FIND("-",K132)-FIND("-",CONCAT(MID(K132,SEQUENCE(LEN(K132),,LEN(K132),-1),1))),LEN(K132)))

解释:

=MID(K132,FIND("-",K132)+1, -- 从第一个“-”后开始

IF(LEN(K132)-LEN(SUBSTITUTE(K132,"-",""))>1, -- 如果字符串中有多个“-”

LEN(K132)-FIND("-",K132)- -- 然后提取第一个“-”之间的字符数......

FIND("-",CONCAT(MID(K132,SEQUENCE(LEN(K132),,LEN(K132),-1),1)))-- 最后一个“-”,通过使用动态数组反转字符串找到

,LEN(K132)))-- 否则,只需提取所有剩余的字符

相关内容