Excel中使用TEXTSPLIT函数获取倒数第三个元素的问题
在Excel中用TEXTSPLIT获取字符串倒数第三个元素的方法
原始目标字符串:
Apache Commons Compress:1.21:1 : Apache Commons Compress : 1.21 : BLACKDUCK : No CAP
你之前尝试的=INDEX(TEXTSPLIT(...),-3)报错,是因为Excel的INDEX函数不支持负索引直接从数组末尾取值;而=RIGHT(TEXTSPLIT(...),3)是对每个拆分出的元素截取右侧3个字符,并非获取倒数第三个元素,所以结果不符合预期。
正确解决方案
由于按冒号拆分后会产生大量空值和带首尾空格的元素,需要先过滤无效内容,再定位倒数第三个元素。推荐用LET函数简化公式(Excel 365及以上版本支持):
=LET( splitArr, TEXTSPLIT("Apache Commons Compress:1.21:1 : Apache Commons Compress : 1.21 : BLACKDUCK : No CAP", ":"), filteredArr, FILTER(splitArr, TRIM(splitArr) <> ""), INDEX(filteredArr, ROWS(filteredArr) - 2) )
公式说明
- 拆分字符串:
TEXTSPLIT按冒号拆分原始字符串,得到包含空值、带空格元素的数组。 - 过滤无效元素:用
TRIM去掉每个元素的首尾空格,再通过FILTER筛选出非空的有效元素,最终得到干净数组:{"Apache Commons Compress";"1.21";"1";"Apache Commons Compress";"1.21";"BLACKDUCK";"No CAP"}。 - 定位倒数第三个元素:
ROWS(filteredArr)获取有效数组的总行数,减2得到倒数第三个元素的位置,最后用INDEX提取该元素,结果为1.21。
如果你的Excel版本不支持LET,可以使用嵌套公式:
=INDEX(FILTER(TEXTSPLIT("Apache Commons Compress:1.21:1 : Apache Commons Compress : 1.21 : BLACKDUCK : No CAP", ":"), TRIM(TEXTSPLIT("Apache Commons Compress:1.21:1 : Apache Commons Compress : 1.21 : BLACKDUCK : No CAP", ":")) <> ""), ROWS(FILTER(TEXTSPLIT("Apache Commons Compress:1.21:1 : Apache Commons Compress : 1.21 : BLACKDUCK : No CAP", ":"), TRIM(TEXTSPLIT("Apache Commons Compress:1.21:1 : Apache Commons Compress : 1.21 : BLACKDUCK : No CAP", ":")) <> "")) - 2)
内容的提问来源于stack exchange,提问作者ildvzg68472
相关产品推荐
相关产品推荐

