如何提取单个单元格内多个逗号分隔数值的最大值
问题解决方法
原公式失效原因
原来的公式通过ROW(INDIRECT("1:999"))生成的只有1-999的整数序列,只能匹配单元格内的整数,自然无法识别带小数点的数值。
解决方案
适用Excel 365/2021及以上版本(支持动态数组)
直接使用TEXTSPLIT拆分后取最大值,公式简单高效:
=MAX(--TEXTSPLIT(B2,{", ",","}))
- 逻辑说明:
TEXTSPLIT(B2,{", ",","})同时兼容带空格和不带空格的逗号分隔符,把单元格内容拆分为独立的数值文本- 前置
--将文本格式的数值转换为可计算的数字格式 - 直接用
MAX取最大值即可 - 需要容错的话可以改成
=IFERROR(MAX(--TEXTSPLIT(B2,{", ",","})),0),遇到空单元格或者无有效数值的情况会返回0避免报错
适用旧版本Excel(无TEXTSPLIT函数)
使用数组公式实现拆分取值,输入完成后需要按Ctrl+Shift+Enter三键结束生效:
=MAX(--TRIM(MID(SUBSTITUTE(B2,",",REPT(" ",99)),ROW(INDIRECT("1:"&LEN(B2)-LEN(SUBSTITUTE(B2,",",""))+1))*99-98,99)))
- 逻辑说明:
- 先用
SUBSTITUTE把所有逗号替换为99个空格,保证每个数值之间有足够的间隔 - 用
MID按固定长度分段截取每个数值的内容 TRIM去掉截取内容前后的冗余空格,--转换为数值格式后用MAX取最大值
- 先用
样例计算结果
对应你提供的测试数据,公式返回结果依次为:1、2.3、4.5、2.3、3、3.4,完全符合预期。
内容的提问来源于stack exchange,提问作者PythonBeginner
相关产品推荐
相关产品推荐

