如何将数值变量sValA格式化为以/为千位分隔符的形式?
解决数字格式化为自定义千位分隔符(/)的问题
这个问题我之前也碰到过,默认的Format函数里直接把逗号换成斜杠确实不会自动按千位分组——因为斜杠在自定义格式里只是普通字符,不是像逗号那样的千位分隔符标记。给你两个简单的解决办法:
方法一:先按默认千位分隔符格式化,再替换分隔符
这个方法最省心,不管数字位数多少都能正确分组,通用性极强:
Dim sValA As Long sValA = 23224560 Dim formattedResult As String formattedResult = Replace(Format(sValA, "#,##0"), ",", "/") ' 最终结果为 "23/224/560"
原理很简单:#,##0会自动按从右往左每三位的规则分组,用逗号作为分隔符;之后我们只需要把逗号替换成需要的斜杠即可。
方法二:使用明确的自定义格式字符串
如果不想用替换操作,也可以直接写对应分组的格式字符串。针对你给出的8位数字,用"##/###/###"就能得到预期结果:
formattedResult = Format(sValA, "##/###/###")
不过这个方法有局限性:如果数字位数发生变化(比如7位、9位),格式字符串需要对应调整,所以不如方法一灵活。
为什么之前的#/##0不生效?
你之前调用Format(23224560, "#/##0")得到23224/560,原因是:
这个格式里的
##0表示匹配数字的最后三位,前面的#/只是把剩余的所有数字直接放在斜杠前面,并没有按三位分组的逻辑。斜杠在这里只是普通的文本分隔符,不具备千位分组的特殊功能。
内容的提问来源于stack exchange,提问作者Tuberose
相关产品推荐
相关产品推荐

