如何在不丢失科学记数法的情况下将列转换为单个管道分隔的列?
Posted
技术标签:
【中文标题】如何在不丢失科学记数法的情况下将列转换为单个管道分隔的列?【英文标题】:How can I convert columns into a single, pipe-separated column without losing scientific notation? 【发布时间】:2015-06-17 10:12:41 【问题描述】:我使用this VBA code 将列转换为管道分隔格式。但是,数据包含科学计数法的数字(例如2.000000e-01
),Excel 会自动将其转换为我不想要的0.2
。
我已尝试更改此代码:
var = Application.Transpose(Application.Transpose(rng.Value))
进入
var = Application.Transpose(Application.Transpose(rng))
甚至
var = Application.Transpose(Application.Transpose(rng.Text))
两者都不起作用。我还尝试将单元格全部格式化为文本(然后宏给出Value
错误)甚至switching off scientific notation。
如何在不丢失科学记数法的情况下将列转换为用管道分隔的单个列?
示例列:
SAMPLE TEST 2.000000e-01 2.000000e-01
【问题讨论】:
【参考方案1】:您想使用CONCATENATE
函数或&
运算符连接文本值。对于科学记数法,您想使用TEXT
函数。 Excel 实际上将数字存储为 0.2,然后以科学计数法显示。
TEXT
函数的帮助说:
语法:TEXT(value, format_text) 显示科学记数法: 要以科学(指数)格式显示数字,请在 format_text 参数中使用以下指数代码。E (E-, E+, e-, e+) 以科学(指数)格式显示数字。 Excel 在“E”或“e”的右侧显示一个数字,该数字对应于小数点移动的位数。例如,如果 format_text 参数是“0.00E+00”,Excel 将数字 12,200,000 显示为 1.22E+07。如果将 format_text 参数更改为“#0.0E+0”,Excel 将显示 12.2E+6。
因此,对于您的示例,假设值在单元格 A1:D1 中,请使用:
=A1&"|"&B1&"|"&TEXT(C1,"0.000000E+00")&"|"&TEXT(D1,"0.000000E+00")
或者在 VBA 中,您可以使用 Range
对象的 Text
属性来获取单元格的内容显示时。如果列宽对于日期来说太窄并且该列显示“########”,那么这就是 Text
属性将返回的内容。
【讨论】:
你写的“或者在VBA中,你可以使用Range对象的Text属性”。但是,在我说我尝试过rng.Text
的问题中,这就是你的意思吗?
您帖子中的 VBA 功能确实失败了。可能是因为它使用了Transpose
函数。如果您通过循环遍历单元格并将 .Text
值附加到字符串来在 VBA 中构建字符串,则应该没问题,例如myString = myString & "|" & cell.Text
。或者在我的回答中使用 Excel 函数。
感谢您的帮助。恐怕要过几天我才能对此进行测试 - 会尽快回复您。
对不起,我决定以不同的方式实现它;不能轻易解决这个问题。对给您带来的不便深表歉意,并感谢您的帮助。【参考方案2】:
编辑:我误读了帖子。此答案用于将文本从一列分成多列。 OP 正在尝试相反的方法。
您使用 Excel 文本到列向导(在“数据”选项卡上,选择“文本到列”)。选择您的数据,然后单击菜单运行。当您进入第 3 步时,告诉 Excel 您希望将该列保留为文本。
如果您需要使用 VBA 完成此操作,请使用宏记录器获取初始代码,然后您可以对其进行调整以满足您的需求。
【讨论】:
好主意,但不幸的是没有奏效。它仍然删除了科学记数法格式! 它在测试数据上对我有用。您可以在问题中添加示例数据吗? 啊,对不起。在单元格中它显示 2.00E-01 但如果我查看公式栏中它已经将它转换为0.2!我会做更多的实验并回复你。 (这就像 Excel 出来找我一样!;)) 等一下...您正在执行 Text To Columns (我需要在此之前执行此步骤,巧合的是,这就是我选择此操作的原因)但这个问题是关于转换多个列.我将发布示例数据。 我的错误 - 我看错了你的帖子。您希望将列加入 列作为管道分隔值。我以为你在做相反的事情。以上是关于如何在不丢失科学记数法的情况下将列转换为单个管道分隔的列?的主要内容,如果未能解决你的问题,请参考以下文章
如何在不丢失数据点顺序的情况下将 Pandas 中的字符串列表分解为单个列表
如何在不丢失 swift 精度的情况下将 String 转换为 Double [重复]