我有一个excel文件,其中提取数据,工作表中的A列是一个12位数字,在该列中保存为文本。见下文
[
此外我有一个宏构建,因为这个文件将以.csv格式上传到web上,这也需要很少的格式化。其中列转换为0.000E + 00格式,而不是保存为.csv
下面的宏执行所需的格式化并完美地将数字转换为0.000E + 00。 但是当我再次重新打开.csv文件时,数字会被更改
Sub ECRformat()
Dim LR1 As Long
Dim LC1 As Long
Dim rng As Range
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Workbooks.Open Filename:="C:\Users\Apple\Desktop\Salary software - Parikh constructions\Base files shared\ECR-WebUpload.xlsx"
Windows("ECR-WebUpload.xlsx").Activate
Sheets("ECR").Select
Rows("1:1").Select
Selection.Delete
Windows("ECR-WebUpload.xlsx").Activate
Sheets("ECR").Select
LR1 = ActiveSheet.Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
LC1 = ActiveSheet.Range("A1").CurrentRegion.Columns.Count
Set rng = Range(Cells(1, 1), Cells(LR1, 1))
rng.Select
With Selection
.NumberFormat = "0.000E+00"
.value = .value
End With
Range("A1").Select
ActiveWorkbook.SaveAs Filename:="C:\Users\Apple\Desktop\Salary software - Parikh constructions\Base files shared\ECR-WebUpload.csv", _
FileFormat:=xlCSV, CreateBackup:=False
ActiveWorkbook.Save
ActiveWindow.Close
End Sub
例如:保存为.csv时,100199847300将转换为1.002E + 11 当我重新打开.csv文件时,该值会更改为1.00E + 11并显示100200000000。
答案 0 :(得分:3)
编辑:将所有以前的修改汇总为一个,并澄清了一些事情。 (感谢Adam让我意识到我不太清楚。)
这就是导入.csv时Excel的行为方式。它将存储为文本的"数字"转换为实数,然后以其认为最佳的方式显示。 (对于12位数字,这是科学记数法。)
如果要以不同方式显示文件,则每次重新打开文件时都必须重新格式化数字。
如果您想要非科学记谱法使用:
.NumberFormat = "0"
或使用完整小数位的科学记数法:
.NumberFormat = "0.00000000000E+00"
但是,如果您希望保存 .csv, 必须 将显示数字格式设置为"0"
,否则Excel将四舍五入到* *重要位置!使用数字格式"0.00000000000E+00"
不会导致舍入,但将导致数字存储< / em>用科学记数法。
对于您的特定情况,由于原始Excel文件中的数字存储为文本,您只需要打开文件并保存为&#34; .csv文件,不进行舍入。根本不需要运行宏。
之后,.csv将按照您的预期运行,即在Excel中显示作为科学记数法,同时在记事本中显示真正的非科学值。 如果您没有将数字格式更改为"0"
,则不会再次将.csv文件保存在Excel中。
*四是Excel使用的默认科学记数法。如果使用自定义科学记数数字格式,则用于舍入的有效位数直接对应于格式。数字也以科学记数法存储。
答案 1 :(得分:1)
所以每个人都在说“这就是Excel遇到一个数字时的表现”......这就错过了这个标记。澄清..
默认情况下,Excel会以科学计数法显示您的12位数字,就像键入网址一样会将您的字符串显示为超链接。
NumberFormat是值的直观表示。
CSV文件存储逗号分隔值,就是这样。您无法应用数字格式并将该数字格式保存在CSV文件中。
如果必须应用数字格式,则必须将其另存为Excel文件以保留格式。
否则,您必须将单元格的VALUE编辑为科学记数法,并将其另存为CSV。
实现这一目标的一种方法是
CUT(CTRL-X)您的数字显示为科学记数法
将单元格格式化为文本
PASTE到记事本
然后将其粘贴回Excel。
另存为CSV
结果:在记事本中打开CSV文件时,您现在有了科学记数法。
如果您找到更好的方法,请在下方发表评论。