我已将这些数字作为文本粘贴在一张纸上:
0.000180
0.000590
0.000850
0.000240
0.000290
0.000160
0.00419
0.000180
0.00187
0.000160
0.000310
0.000120
我想在 Excel 中将它们转换为数字。但是,这样做时,我会丢失末尾的 0(例如 0.000180 变成 0.00018)。如果我尝试增加小数位数,那么 0.00419 会变成 0.004190,这不太好(因为我必须将这些值打印到具有精确小数位数的报告中)。更糟糕的是,我需要应用一些条件格式(当将数字粘贴为文本时,该格式不起作用)。是否有可能将这些值格式化为数字,同时在同一列中具有不同位数的值?谢谢
答案1
您可以像这样编码:
Sub Keep0s()
Dim c As Range
Dim MyStr As String
Dim x As Long
For Each c In Selection
MyStr = "0.0"
For x = 1 To Len(c) - 3
MyStr = MyStr & "0"
Next x
c.NumberFormat = MyStr
c = CDec(c)
Next c
End Sub
按ALT+F11或相似的. 突出显示要转换的以文本形式存储的数字,然后运行代码。
答案2
案例 1:你发现了一个数学规则
如果您找到某种规则来计算您想要从数字本身显示的有效数字的数量,那么它相对容易:您创建与您想要的不同数字数量一样多的条件格式条件,并且对于每个条件,您定义一个具有那么多数字的数字格式。
例如,根据您的数据,我可以猜测您想要显示 3 位有效数字。我不知道这是否正确,但如果是这样,您可以创建几个条件,例如:
- 条件是公式:
=TRUNC(-LOG10(A1))+3=6
→格式化为小数点后 6 位 - 条件是公式:
=TRUNC(-LOG10(A1))+3=5
→格式化为5位小数
加上所需的任意数量。请注意,我假设您已将文本转换为数字,并且这些数字从单元格 A1 开始。
案例 2:没有数学规则
另一方面,如果没有数学规则,而您只需保留与输入文本相同数量的字符,那么您可以执行与情况 1 类似的操作。
保留文本列原样(例如,从单元格 A1 开始),然后创建另一列,将相同的数据转换为数字(例如,从单元格 B1 开始)
然后对 B 列应用条件格式,使用一系列规则,例如
- 条件是公式:
=LEN(A1)-2=6 → format
精确到小数点后 6 位 - 条件是公式:
=LEN(A1)-2=5 → format
精确到小数点后 5 位
以及所需的数量。