我有以下文本单元格值:
31.55c/kWh
49.66c/kWh
12.84 cents/kWh
19.24 cents/kWh
15.30 cents/day
15.30 cents/day
12 cents/kWh data
7 cents/kWh data
我已经编写了以下公式,但无法过滤所需的数据(起始单元格编号:B2):{=IF(".",(LEFT(B2, MATCH(TRUE,ISERROR(VALUE(MID(B2,ROW(INDIRECT("1:"&LEN(B2))),1))),0))+2),(LEFT(B2, MATCH(TRUE,ISERROR(VALUE(MID(B2,ROW(INDIRECT("1:"&LEN(B2))),1))),0))))}
谁能帮我解决这个问题!预期结果:
31.55
49.66
12.84
19.24
15.3
15.3
12
7
最佳答案
这里有一个小技巧I've seen before在另一个网站上。你可以试试:
微软的 365:
=-LOOKUP(1,-LEFT(A1,SEQUENCE(LEN(A1)))
或者对于早期版本,向下拖动:=-LOOKUP(1,-LEFT(A1,ROW($1:$100)))
或者,如果您对 100 个字符以下的长度不太有信心:=-LOOKUP(1,-LEFT(A1,ROW(A$1:INDEX(A:A,LEN(A1)))))
旁注:我们也不再使用 volatile INDIRECT()
到半 volatile INDEX()
.注:这适用于点是十进制分隔符的语言环境,添加嵌套的
SUBSTITUTE()
当您的语言环境使用逗号时:=-LOOKUP(1,-LEFT(SUBSTITUTE(A1,".",","),SEQUENCE(LEN(A1)))
简短说明:
这里的想法是,我们从字符串的左侧进行迭代,将长度数组馈送到
LEFT()
的第二个参数。 . LEFT()
前面的减号会将所有值转换为负数或将被忽略的错误。由于LOOKUP()
无法从第一个参数中找到正数 1,它将返回结果数组中的下一个最小值。然后唯一要做的就是将负数变为正数,并在整个公式前面加上前导减号。由于LOOKUP()
是一个本地 CSE 公式,您不必这样确认。
关于excel - 如何过滤掉数字和 .在 excel 中使用 Excel 公式从文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67347448/