如何更改数据库导入的表中单元格的数字格式?

如何更改数据库导入的表中单元格的数字格式?

我有一张像这样的表格 -

    A  |     B      | C
   ----------------------
    2  |  Okay      |  0
    3  |  Not okay  | 0

单元格C3有绿色错误指针,并显示“此单元格中的数字被格式化为文本或前面有撇号”,当然它是左对齐的。

C2当我显示单元格和的格式时C3,它们都显示为“常规”。

当我使用 VBA 检查“NumberFormat”时,两者都显示为“General”。

顺便说一下,我正在使用 Office 2010。

我想通过使用 VBA 代码将格式从文本更改为常规来整理它(这发生在多个工作表中的数十个单元格中),但如果它认为相关单元格已被格式化为常规,我该怎么做?

答案1

当 Excel 认为数字存储为文本时(即使它说不是,即使您将格式更改为数字),就会发生这种情况,因为它在另一端编码不正确。

对于以文本形式存储的数字,一个非常简单的解决方法是添加一个额外的列,其中包含将数字转换为数字的公式。

=$C2*1

只需将其向下拖动,然后引用即可。如果您使用的是实时连接表,则将此列放在表的末尾将意味着公式范围将随数据范围扩展。


当然,使用 VBA,您可以运行一个循环,遍历数据并用该公式的结果替换列中的每个值。

答案2

这是一个可以实现此目的的 VBA 代码片段。

Sub FixTextFormattedNumbers()
Dim s As Worksheet, r As Range
'Set target sheet and range
Set s = Sheets("Sheet1")
Set r = s.Range("A1:A10")

For Each c In r
    On Error Resume Next
    c.Value = CDbl(c.Value)
Next c
End Sub

错误处理只是为了防止在指定范围内有实际文本。

答案3

复制粘贴或导入数据时经常会发生这种情况。如果是整列,那么修复此问题的最佳方法是重新导入该列,并更好地控制 Excel 对某项数据类型的假设。

实现此目的的方法是:

  1. 突出显示此问题的列

  2. 选择Data->Text To Columns

  3. 单击Finish(默认适用于这种情况 - 它们是分隔符->制表符->常规(格式))。如果您必须执行相反的操作(重新导入数字但强制将其视为文本),则可以将第三个选项更改为文本

相关内容