格式为最大“小数点后”长度

时间:2014-06-19 19:57:25

标签: vba excel-vba excel

我的范围包含不同小数位数的数字。

我需要编写一个格式化整个范围的代码,使小数位数等于范围内值的最大小数位数。

示例:

2.45
3.38574
6.1

应该成为:

2.45000
3.38574
6.10000

我该怎么做?

2 个答案:

答案 0 :(得分:1)

我建议采用这种高级方法:

  1. 将数字转换为字符串。
  2. 在每个字符串中,找到小数点字符.
  3. 计算此小数点后的字符数;这将为您提供每个数字中的小数位数。
  4. 最大限度地利用这些。
  5. 根据此最大值,制作数字格式代码字符串(例如,您需要#.0000之类的4位小数),并使用NumberFormat属性将其应用于您的范围。
  6. 试试吧。如果您遇到某个特定步骤,请询问一个新问题,详细说明您为该特定步骤尝试了什么,以及它究竟没有给出预期结果。

答案 1 :(得分:0)

试试这个:

Sub decPlac()

places = 0

For Each sell1 In Sheets("sheet1").Range("A1:A10")
    dots = Len(CStr(sell1)) - InStr(1, CStr(sell1), ".")
    If dots > places Then
        places = dots
    End If
Next

For Each sell2 In Sheets("sheet1").Range("A1:A10")
    sell2.NumberFormat = ("0." & WorksheetFunction.Rept("0", places))
Next

End Sub

只需将(" A1:A10")更改为两个循环中的范围