【问题标题】:How to import long number from csv to excel without converting to scientific notation in VBA如何在不转换为 VBA 中的科学记数法的情况下将长数字从 csv 导入 excel
【发布时间】:2021-08-18 06:53:01
【问题描述】:

我用下面的代码打开了分号分隔的 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 而不是那个数字。 这里有什么问题?

【问题讨论】:

    标签: excel vba


    【解决方案1】:

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

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

    对抗它:

    • 以 Excel 表格形式打开(如果无法以 Excel 表格形式打开,则进行转换)
    • 突出显示(条形码/科学记数法)列
    • 进入数据/文本到列
    • 第 1 页:选中“分隔”/下一页
    • 第 2 页:选中“选项卡”并将“文本限定符”更改为“/下一个”
    • 第 3 页:检查“文本”而不​​是“常规”
    • 完成

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

    希望这会有所帮助!

    【讨论】:

    • 或者类似地选择列 -> 主页选项卡 -> 数字子选项卡 -> 将下拉菜单“常规”更改为“文本”
    • 此方法仍不会检索已删除的前面的零。我有一个从 MySQL 导出的 ID 列表,其中一些以零开头。我很惊讶 Excel 能做到这一点。
    【解决方案2】:

    在 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 标记为文本...

    【讨论】:

    • 这就是我想做的,但怎么做?我想当我将格式设置为 fieldinfo 中的文本时,它会这样做,但不会。
    • 谢谢伙计,我把字段信息中的列放错了位置。现在有效。
    【解决方案3】:

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

    Data --> From Text/CSV

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

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

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        【解决方案5】:

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

        我的决心是:

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

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

        【讨论】:

          【解决方案6】:

          我有一个适合我的解决方案,它使用文本文件制表符分隔。

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

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

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

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

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

          将格式更改为文本

          单击第一个单元格并再次按 Ctrl-V。

          【讨论】:

            【解决方案7】:

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

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

            你会很高兴的。

            【讨论】:

              【解决方案8】:

              选择要更改格式的单元格:

              'Example:
              Columns("A:E").Select
              Selection.NumberFormat = "0.00" 
              Selection.NumberFormat = "0.0"
              Selection.NumberFormat = "0"
              
              'The exponential or scientific notation will be converted 
              

              【讨论】:

                猜你喜欢
                • 2020-03-20
                • 2019-04-21
                • 2020-07-19
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2021-12-05
                • 2022-10-06
                相关资源
                最近更新 更多