格式化一个数字,该数字可以用千位分隔符四舍五入

时间:2018-12-24 06:10:41

标签: excel vba

我有一些以“ dTot”变量结尾的代码,该变量将是一个最多有5个小数位的数字。

用户可以选择设置dTot的小数位数,将用户选择分配给变量“ iDP”,范围可以是0到5。

dTot = Round(dTot,iDP)`可以正常工作。

但是,当添加到另一个数组时,我还需要使用千位分隔符格式化舍入的数字。

Format(Round(dTot, iDP), "#,##0.00000")

如果iDP为5,则正常工作,

Format(Round(dTot, iDP), "#,##0.00")

如果iDP为2

如何获取遵循iDP值的格式?

我知道我可以使用“ Select Case iDP”并具有6种Case,但是由于格式化需要应用于数组中200行中每行的6个表达式,因此我希望找到一种避免“ Select Case”的方法。 “

2 个答案:

答案 0 :(得分:3)

根据需要构建格式掩码字符串。

Format(Round(dTot, iDP), "#,##0" & IIF(iDP, ".", "") & string(iDP, "0"))

enter image description here

答案 1 :(得分:1)

编辑:添加了user10825204在接受的答案中使用的出色的“ & IIF(iDP, ".", "")”:

WorksheetFunction.Rept与Replace(Space)

WorksheetFunction.Rept

Format(Round(dTot, iDp), "#,##0" _
    & IIF(iDP, ".", "") & WorksheetFunction.Rept("0", iDp))

替换(空格)

Format(Round(dTot, iDp), "#,##0" _
    & IIF(iDP, ".", "") & Replace(Space(iDp), " ", "0"))