如何将长号从csv导入excel而不转换为VBA中的科学记数法

时间:2012-12-05 20:43:59

标签: excel vba excel-vba

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

8 个答案:

答案 0 :(得分:28)

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

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

打击它:

  • 以Excel格式打开(如果您不能打开则转换为
  • 突出显示(条形码/科学记数法)栏
  • 进入数据/文本到列
  • 第1页:检查'定界' /下一步
  • 第2页:检查'标签'并更改文本限定符'到" /下一步
  • 第3页:检查'文字'而不是一般的'
  • 完成

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

希望这会有所帮助!!

答案 1 :(得分: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标记为文本...

答案 2 :(得分:2)

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

Data --> From text

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

答案 3 :(得分:1)

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

我的决心是:

  1. 打开Mac os软件“Numbers”并创建一个新标签
  2. 将数据复制到选项卡,您将看到正确的数字
  3. 打开Microsoft excel更改编号列“单元格格式”到文本
  4. 从Numbers标签复制数据;
  5. 右键单击“可选粘贴”,选择文本并确定。
  6. 我不知道为什么,但它对我有用。

答案 4 :(得分:1)

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

答案 5 :(得分:0)

您似乎正在使用文本文件作为输入。步骤:

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

您会很好。

答案 6 :(得分: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 

答案 7 :(得分:0)

我有一个适用于我的解决方案,其中带有分隔的文本文件标签。

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

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

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

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

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

将格式更改为文本

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