我正在尝试设置结果如下自定义数字格式:
值“22,800”变成了“欧洲:22.8 M”使用字符串变量设置.NumberFormat的值在Excel VBA
我可以使用数字格式化窗口并使用:
“Europe:”#,## 0.0,“M”; “Europe:” - #,## 0.0,“M”
我也可以在VBA窗口中使用
ActiveCell.NumberFormat =“”“Europe:”“#,## 0.0,”“M” “;”“Europe:”“ - #,## 0.0,”“M”“”
这是问题:我正在运行一个循环函数,它将不同工作表中的值粘贴到摘要工作表 - 我需要区域(例如“欧洲”)显示在号码旁边,但我不想为9个区域编写循环功能的代码9次。
我尝试的解决方案,在这里我只想改变变量 “区域” 的值for each循环:
Dim region As String
Dim numformat As String
region = "Europe"
numformat = Chr(34) + Chr(34) + Chr(34) + region + ":" + Chr(34) + Chr(34) + " #,##0.0, " + Chr(34) + Chr(34) + "M" + Chr(34) + Chr(34) + "; " + Chr(34) + Chr(34) + region + ":" + Chr(34) + Chr(34) + " -#,##0.0, " + Chr(34) + Chr(34) + "M" + Chr(34) + Chr(34) + Chr(34)
Selection.NumberFormat = numformat
哪些格式的数量为“欧洲:M#,## 0.0,;欧洲: - #,## 0.0,M“ - 它根本不显示数字,只是这个字符串。 ?
但是,如果我用numformat在即时窗口返回字符串的值,然后复制/粘贴值,这样
Selection.NumberFormat =“”“欧洲:”“#,## 0.0,” “M” “ ”“ 欧洲:” “ - #,## 0.0, ”“ M ”“”
然后,我得到正确的数字格式, “欧洲:22.8 M”
但是这并未对我没有帮助,因为现在区域名称再次被硬编码。任何人都可以帮助确定我做错了什么,或找出一种替代解决方案?
干杯,
乙
区域格式存在于源数据中吗? –
源数据采用标准数字格式进行格式化,使用千位分隔符和无小数。它需要保持这种方式。该区域是每个选项卡的名称。 –
您可以创建一个Const String,如“Const MasterNumFormat =”“”:“”#,## 0.0,“”M“”;“”:“” - #,## 0.0,“”M“”“ '然后使用'numformat = Replace(MasterNumFormat,“”,region)'而不是构造它。 –
PatricK