如何判断文本格式单元格中的值是否为数值?
嗨,这个场景我太熟悉了——为了保留前导零把单元格设成文本格式,结果ISNUMBER()直接不管用了,确实头疼!不过有几个靠谱的方法能帮你搞定:
用VALUE()+ISNUMBER()组合:直接用公式
=ISNUMBER(VALUE(A1))就行。VALUE函数会尝试把文本格式的内容转换成数值,哪怕是带前导零的"012345"也能成功转成12345,这时候ISNUMBER就会返回TRUE;如果单元格里是字母、符号这类非数字内容,VALUE会返回错误值,ISNUMBER对错误值自然返回FALSE,完美区分。双负号强制转换法:试试
=ISNUMBER(--A1)。这里的双负号(--)是个实用小技巧,能把文本格式的纯数字强制转换成数值型,原理和VALUE类似,但写法更简洁。同样,带前导零的文本数字也能被识别,非数字内容转换后会变成错误值,ISNUMBER就返回FALSE。正则匹配法(适用于Excel 365及以上版本):如果你的Excel支持正则,可以用
=REGEXMATCH(A1, "^[0-9]+$")。这个公式会严格匹配单元格里是否全是数字(包括前导零),是就返回TRUE,不是就返回FALSE。要是担心单元格有前后空格,还可以加个TRIM处理:=REGEXMATCH(TRIM(A1), "^[0-9]+$")。
另外补充个细节:如果单元格里是带小数点的数字(比如"0123.45"),前两个方法也能正常识别;如果用正则的话,要把表达式改成"^[0-9]+(\.[0-9]+)?$",这样就能同时匹配整数和小数了。
备注:内容来源于stack exchange,提问作者Simon Elms

