原文 | 我想要的是 |
---|---|
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
答案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)))
-- 否则,只需提取所有剩余的字符