如何在VBA中将CSV中的长数字导入Excel而不转换为科学记数法

ao218c7q  于 2023-06-07  发布在  其他
关注(0)|答案(9)|浏览(362)

我打开分号分隔的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; 21375000120000010020601764
当我打开新保存的文件时,我看到的是2.117500012E+25,而不是那个数字。怎么了?

slwdgvem

slwdgvem1#

我正在将产品导入Excel文件,条形码将以科学记数法出现(例如5.4265E+12)
这意味着当我将文件转换为csv文件以上传详细信息时,csv无法正确阅读条形码并将其更改为52862300000等。
为了与之作斗争:

  • 作为Excel工作表打开(如果无法作为Excel工作表打开,则进行转换)
  • 突出显示(条形码/科学计数法)列
  • 进入Data / text to columns
  • 第1页:勾选“分隔”/下一页
  • 第2页:选中“Tab”并将“Text Qualifier”更改为“/ Next
  • 第3页:勾选“文本”而不是“一般”
  • 完成

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

q8l4jmvw

q8l4jmvw2#

不直接在Excel中打开文件,而是使用
Data --> From Text/CSV
并使用向导将列的类型指定为文本。
在数据类型检测下拉框中,选择Do not detect data types

a6b3iqyw

a6b3iqyw3#

在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列,但是你把col 2标记为文本…

lnvxswe2

lnvxswe24#

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

o4tp2gmn

o4tp2gmn5#

我的系统是Mac OS X El Capitan,当我从HTML表复制数据到Excel时,数字总是自动转换为1.10101E+17等。当我改变“单元格格式”为文本,数字是不正确的。
我的决心是:
1.打开Mac os软件“Numbers”并创建一个新选项卡
1.将数据复制到选项卡,您将看到正确的数字
1.打开Microsoft Excel更改数字列“单元格格式”为文本
1.从数字选项卡复制数据;
1.右键单击“可选粘贴”,选择“文本”并确定。
我不知道为什么,但它为我工作。

xtfmy6hx

xtfmy6hx6#

我有一个解决方案,我的作品与文本文件制表符分隔。
在记事本等中打开文本文件。
用Ctrl-A和Ctrl-C然后Ctrl-V将文本文件复制到空白工作表中。
注意所有看起来科学的列。
然后按Ctrl-Z(撤消)。您现在应该有一个空白的工作表。
高亮显示之前记录的所有列(按住Ctrl键并单击每个列标题)。
将格式更改为文本
单击第一个单元格并再次按Ctrl-V。

8nuwlpux

8nuwlpux7#

它看起来像你正在使用一个文本文件作为输入。步骤:
1.转到单元格A1
1.文件->打开->选择.txt文件->打开
1.将打开文本导入向导。根据输入文件格式执行步骤1和2。对于第三步,请执行以下操作:
1.使用鼠标选择让您头痛的列,在您的情况下,长帐号。在“列数据格式”下选择“文本”单选按钮,然后单击完成。
你就可以走了。

ve7v8dk2

ve7v8dk28#

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

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

'The exponential or scientific notation will be converted
n53p2ov0

n53p2ov09#

使用导入并选择不检测类型。否则,您的数字将被截断,并填写0时转换为文本

相关问题