20

我用下面的代码打开了分号分隔的 txt 文件,长帐号在保存到 excel 后显示为科学记数法,无论该列的文本格式如何。

我在这里做错了什么?

    Application.ScreenUpdating = False
    Workbooks.OpenText fileName:=Filetxt, Origin:=xlWindows, StartRow _
    :=2, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
    ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=True, Comma:=False, _
    Space:=False, Other:=False, Local:=True, _
    FieldInfo:=Array(Array(1, 4), Array(2, xlTextFormat)
    'Save text file as csv file
    Set wb = ActiveWorkbook
    Application.DisplayAlerts = False
    wb.SaveAs fileName:=fileXls, FileFormat:=6, _
    ReadOnlyRecommended:=False, _
    CreateBackup:=False
    Application.DisplayAlerts = True
    wb.Close savechanges:=True

txt 文件中的记录如下所示:2011-12-21;100,00;"21375000120000010020601764"

当我打开新保存的文件时,我看到 2.117500012E+25 而不是那个数字。这里有什么问题?

4

8 回答 8

36

我正在将产品导入 excel 文件,条形码会以科学计数法出现(例如 5.4265E+12)

这意味着当我将文件转换为 csv 文件以上传详细信息时,csv 没有正确读取条形码并将它们更改为 52862300000 等。

为了对抗它:

  • 以 Excel 表格形式打开(如果无法以表格形式打开,则进行转换)
  • 突出显示(条形码/科学记数法)列
  • 进入数据/文本到列
  • 第 1 页:选中“分隔”/下一页
  • 第 2 页:选中 'Tab' 并将 'Text Qualifier' 更改为 " / Next
  • 第 3 页:检查“文本”而不​​是“一般”
  • 结束

这应该将它们全部转换为长数字。然后您可以将其保存为 CSV 文件,并且这些数字不会被转换/格式化为科学数字。

希望这可以帮助!!

于 2013-04-18T18:24:06.093 回答
3

在 Excel 中,数字的精度限制为 15 位。您的示例数字太大,Excel 无法准确表示 - 这可能解释了转换为科学记数法的原因。

您应该将该列作为文本而不是数字导入 Excel:那么您将不会丢失任何精度。

编辑:如果您在录制宏时逐步完成“从文本打开”过程,您应该得到如下内容:

Workbooks.OpenText Filename:= Filetxt, Origin:=xlWindows, _
        StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
        ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=True, Comma:=False _
        , Space:=False, Other:=False, FieldInfo:=Array(Array(1, 5), Array(2, 1), _
        Array(3, 2)), TrailingMinusNumbers:=True

该过程中有一个步骤允许您选择每列中的数据类型。

我认为您的“FieldInfo”参数有点偏离:您应该有 3 列,但您已将 col2 标记为文本...

于 2012-12-05T21:24:53.787 回答
3

不要直接在 Excel 中打开文件,而是使用

Data --> From Text/CSV

并使用向导将列的类型指定为文本。

在数据类型检测下拉框中,选择Do not detect data types

于 2021-02-16T14:43:09.417 回答
2

在数字前插入撇号。这会强制 Excel 显示整数。

于 2020-06-18T22:24:13.830 回答
1

我的系统是 mac os X El Capitan ,当我将数据从 html 表复制到 Excel 时,当我将“单元格格式”更改为文本时,数字总是自动转换为 1.10101E+17 等,数字不正确。

我的决心是:

  1. 打开 Mac os 软件“Numbers”并创建一个新选项卡
  2. 将数据复制到选项卡,您将看到正确的数字
  3. 打开 Microsoft excel 将数字列“单元格格式”更改为文本
  4. 从数字选项卡复制数据;
  5. 右键单击“可选粘贴”选择文本并确定。

我不知道为什么,但它对我有用。

于 2016-08-31T10:14:44.780 回答
1

我有一个适用于我的解决方案,其中包含分隔的文本文件制表符。

在记事本等中打开文本文件。

使用 Ctrl-A 和 Ctrl-C 然后 Ctrl-V 将文本文件复制到空白表中。

注意所有看起来科学的列。

然后 Ctrl-Z(撤消)。您现在应该有一个空白工作表。

突出显示您之前记下的所有列(Ctrl-单击每个列标题)。

将格式更改为文本

单击第一个单元格,然后再次单击 Ctrl-V。

于 2020-07-22T16:52:23.283 回答
0

选择应该更改格式的单元格:

'Example:
Columns("A:E").Select
Selection.NumberFormat = "0.00" 
Selection.NumberFormat = "0.0"
Selection.NumberFormat = "0"

'The exponential or scientific notation will be converted 
于 2019-01-28T13:27:48.487 回答
0

看起来您正在使用文本文件作为输入。脚步:

  1. 转到单元格 A1
  2. 文件 -> 打开 -> 选择 .txt 文件 -> 打开
  3. 文本导入向导将打开。根据您的输入文件格式执行步骤 1 和 2。对于第三步,请执行以下操作:
  4. 在您的情况下,使用鼠标选择让您头疼的、长帐号的列。在“列数据格式”下选择“文本”单选按钮,然后单击完成。

你会很高兴的。

于 2018-07-13T15:53:03.623 回答