Excel公式无法工作 - 无法识别数字

3
我在Excel电子表格上粘贴了一些数字,想对它们进行一些计算。问题是Excel无法识别这些数字。我已经尝试了多种方法将它们转换为数字,但都没有成功:粘贴/特殊乘以1;将每个单元格格式化为数字/科学数字格式。而且,每个单元格右上角也没有像我在互联网上读到的那样显示错误消息,指示其中有一个作为文本编写的数字。如果重新输入每个数字,Excel就可以识别它。
为确保问题确实是Excel将数字视为文本,我尝试了ISNUMBER()函数,返回FALSE,和ISTEXT()函数,返回true。
我想知道如何在不必键入每个单元格的情况下解决该问题。
提示:这些数字采用科学数字格式,即1,085859E+001。

你尝试过粘贴为数值吗?这样可以粘贴单元格的内容,而不是任何相关的数字/文本格式 - 值得一试吗? - MikeyB
你能发一些数字的例子吗?另外,你是从哪里复制粘贴它们的? - NickSlash
你从获取数值的位置中得到的是数字吗?听起来好像在复制到剪贴板之前已经被存储为文本了。你是从另一个应用程序中获取它们吗? - Dave
这可能也会有所帮助:http://www.vbaexpress.com/forum/showthread.php?42119-Solved-Convert-exponential-format-to-a-number - Dave
我正在从一个由另一个程序编写的 .txt 文件中获取数字。我刚刚检查了一下,它们确实被存储为文本,但是有没有办法让 Excel 将它们识别为数字? - user3368101
11个回答

4

由于该列为文本,因此单元格被格式化为文本。您需要使用Value将文本转换为数字,以使公式起作用。

A2 = 123 A3 = 123 Richard 公式 =isnumber(A2) 结果为false 使用 =isnumber(value(A2)) 结果为True


1

我曾经遇到同样的问题,后来发现默认设置中小数点分隔符是(,)而不是(.)。一旦我更改了这个设置,一切就正常了。


0
如果您的“数字”被识别为文本,您可以使用VALUE()函数来确保Excel理解它实际上是一个数字。
A1: `1.23E+10 (this is a  string)
B1: =VALUE(A1)
    =12300000000
C1: 1.23E+10 (this is a number)
D1: =IF(B1==C1,"It worked", "Uh Oh")
    =It Worked (for me anyway)

我不确定科学计数法中逗号的作用,如果不需要,建议函数将其替换。


逗号是分隔符,它的作用就像点一样(在我的国家这是标准,而且我的Excel已经格式化为接受它)。当我输入=VALUE(A1)时,会出现错误#VALUE!。 - user3368101
分隔符是用来分隔千位数还是小数点的?我发现,如果我将 1.23 中的“.”替换为“,”,也会出现 #VALUE。如果我进入选项并将千位分隔符设置为“.”,将小数点分隔符设置为“,”而不是使用“系统默认值”,那么它就可以正常工作。 - NickSlash

0
我在将PPT中的数字(例如($3,000))粘贴到Excel时遇到了问题。尝试了多种不同的方法,包括查找替换括号、逗号、$符号为空白,并尝试格式化以便Excel可以运行公式。唯一有效的选项是先将其粘贴到Word中,然后再将值粘贴到Excel中,这样就可以在没有任何其他格式化步骤的情况下工作。惊讶的是我不能在Excel中完成所有操作。也许还有其他方法。

0
打开一个新的空白Excel,然后进入“数据 > 从文本”选项,这样您就可以导入文本并指定要转换的格式。在“文本导入向导”页面上,选择“分隔符”或“固定宽度”(我不确定您的原始文本文件是什么样子,但通常应该是“分隔符”)。在下一页上,选择一个“分隔符”或在“其他”中输入一个分隔符。在第3步中,您应该看到下面列出的数据和左上角的数据格式。对于那些您认为不应该是文本的列,请选择“常规”。这应该可以解决您的问题。

0

可能存在隐藏字符。尾随/前导空格可能不可见,因此可能被错误地忽略。如果有带有数字值的尾随/前导空格字符,则 Excel 将其视为文本。

将问题单元格的内容复制到 MS-Word([选择问题单元格并将其复制到 MS-Word]),检查是否有隐藏字符,并使用“查找”/“替换”功能删除隐藏字符。


0

请参考Kenneth Hobs在此处的答案:http://www.vbaexpress.com/forum/showthread.php?42119-Solved-Convert-exponential-format-to-a-number

打开您的Excel文件,按下Alt + f11打开VBA屏幕, 转到插入>模块,复制并粘贴Kenneth的代码:

Sub Expo()
    Dim cell As Range, s() As String, lng As Long, n As Integer
    For Each cell In Selection
    With cell
        If Not VarType(.Value2) = vbString Then GoTo NextCell
        s() = Split(cell.Value2, "E")
        .Value2 = s(0) * 1 * (1 * 10 ^ s(1)) 'ePart(s(1))
        .NumberFormat = "General"
        .EntireColumn.AutoFit
    End With
NextCell:
    Next cell
End Sub

现在您可以将其作为宏运行以转换所选单元格。或者,如果您想将其作为函数使用,请复制以下代码:

Function Expo(cell As Range)
    Dim s() As String

    With cell
        If VarType(.Value2) = vbString Then
            s() = Split(.Value2, "E")
            Expo = s(0) * 1 * (1 * 10 ^ s(1)) 'ePart(s(1))
        End If
    End With

End Function

这样,您可以将其用作Excel中的普通函数,例如=Expo(A1)

正如我在上面的评论中提到的那样,当原始数字转换为科学计数法时,您已经失去了一定程度的准确性。如果可能的话,最好的解决方案是让源程序将正确的数字写入文本文件。


我跳过了科学计数法,直接乘以1 - 对我来说也起作用。感谢代码片段! - user2366842

0
打开一个新的 Word 文档,先将网页内容粘贴到 Word 中,然后从 Word 文档中复制这些内容,以文本形式粘贴到 Excel 中。这个简单的方法对我很有效。

0
最近我遇到了这个问题。我忘记了我已经将公式重新计算设置为手动。奇怪的是,它在最初创建时返回FALSE(这是正确的),但是由于测试依赖于其他单元格的值,当更改这些单元格的值时,不会触发具有isnumber()公式的单元格中的更改。
按下F9键“解决”了我的问题(以及我的无知)。

0
我的情况很顽固,无法通过“特殊粘贴”或CLEAN()函数得到响应。最终,我将有问题的Excel数据列复制并粘贴到新的Notepad++文档中解决了这个问题。这揭示了所有错误数字中的一个前导“?”(显然是某些不可打印字符)。使用“查找和替换”功能查找所有“?”并替换为空白。在“编辑”菜单中选择“全部”,将其复制到新的Excel列中,完成!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接