仅使用公式检查Excel单元格文本是否为数字


13

我必须找出我的单元格文本是否为数字值,并想使用一种不会妨碍其当前状态或值的优雅的非VBA方法。

我发现的是,该ISNUMBER()功能仅在单元格为数字格式时有效,而在文本格式下则没有空格,例如:

数字作为文字示例

对于前三个=ISNUMBER(...),我的最后尝试是=ISNUMBER(TRIM(...))

我使用的唯一不使用VBA的方法是使用文本到列覆盖当前值,然后使用该=ISNUMBER()函数。

注意:我精通VBA和Excel,并且了解可以创建用户定义的函数。但是,我不想这样做,因为这会强加要安装的宏所需的工作簿或加载项,在某些情况下,我可以这样做。

我将不胜感激任何建议,想法(即使他们告诉我无法完成)或VBA解决方案(但是不会被标记为答案)。


4
FWIW ISNUMBER是很少使用的替代方法N。像这样=NOT(ISERR(N(--A1)))
brettdj

1
@brettdj对此表示感谢!对于一个使用最少数量字符且快速又肮脏的答案,我现在得到了=N(-A1)。也不知道存在。
glh 2013年

单元格引用前面的连字符的作用是什么?为什么每个人都有不同数量的连字符?
youcantryreachingme

Answers:


30

尝试将单元格值乘以1,然后运行IsNumberTrim函数,例如:

=IsNumber(Trim(A1)*1)


2
+1为速度和良好的答案。当事情在您的脸上出现,但您看不到它们时,它会很烂!
glh 2013年

1
我也发现您甚至不需要使用trim。致以我的问候。
glh 13-4-30

2
@glh有时只需要另一双眼睛就能看到ya前面的内容。:)
David Zemens

5

假设要转换的值在A1中,则可以使用以下公式:

=ISNUMBER(VALUE(TRIM(CLEAN(A1)))

在这里,清理和修剪功能将删除空格,并且不会打印任何字符。函数值将字符串转换为数字,使用转换后的字符串,我们可以检查值是否为数字。


3
+1。我喜欢快速又脏的=VALUE(A1)数据,因为我不需要数据CLEAN()。我不知道该VALUE()功能是否存在。只是要注意,TRIM()什么也不做,因为无论如何空格都会被忽略。
glh 13-4-30

3

我对这个问题的最短答案是:

=N(-A1)

谢谢brettdj


2

我知道这篇文章很旧,但是在这种情况下,我有一个返回的公式(333),即使它是一个数字,ISNUMBER也会说它是一个数字,即使我不想要答案,我也发现它非常有用数字以外的字符。以下对我有用。

=IF(AND(ISNUMBER(--(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1)))),"Is Number","")

如果有数字以外的任何其他字符,则可以使用。如果您只想要一个真假,则将IF

=AND(ISNUMBER(--(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))))

正如David Zemens所说

=IsNumber(Trim(A1)*1)

可以,但是如果有“-”或括号中的数字,它将表示它是一个数字。

我希望这对您或其他人有帮助。


0

如果有人需要过滤包含非数字内容的单元格:

=AND(SUMPRODUCT(--ISNUMBER(--MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1)))=LEN(A1),A1<>"")

小数和负数结果 FALSE

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.