我必须确定我的单元格文本是否是数值,并想使用一个优雅的非 VBA不妨碍其当前状态或值的方法。
我发现该ISNUMBER()
函数仅在单元格采用数字格式或具有没有空间如果文本格式例如:
对于前三个我已经使用过=ISNUMBER(...)
并且我最后一次尝试的是=ISNUMBER(TRIM(...))
。
我使用过的唯一不使用 VBA 的方法是使用文本到列覆盖我当前的值,然后使用该=ISNUMBER()
函数。
笔记:我精通 VBA 和 Excel,并且知道我可以创建用户定义函数。但我不想这样做,因为这会强制安装宏所需的工作簿或加载项,而在某些情况下我可以并且已经这样做了。
我将不胜感激任何建议、想法(即使他们告诉我这是不可能的)或 VBA 解决方案(但不会被标记为答案)。
答案1
尝试将单元格值乘以 1,然后运行IsNumber
和Trim
函数,例如:
=IsNumber(Trim(A1)*1)
答案2
假设要转换的值在 A1 中,则可以使用以下公式:
=ISNUMBER(VALUE(TRIM(CLEAN(A1)))
此处,clean 和 trim 函数用于删除空格和不可打印的字符。函数值将字符串转换为数字,使用转换后的字符串,我们可以检查该值是否为数字。
答案3
这最短我的问题的答案是:
=N(-A1)
谢谢 brettdj
答案4
如果有人需要过滤包含非数字内容的单元格:
=AND(SUMPRODUCT(--ISNUMBER(--MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1)))=LEN(A1),A1<>"")
小数和负数结果FALSE