【发布时间】:2016-01-02 16:20:36
【问题描述】:
我正在尝试设置具有以下结果的自定义数字格式:
值“22,800”变为“欧洲:22.8 M”
我可以使用数字格式窗口来实现这一点,并使用:
“欧洲:”#,##0.0,“M”; "欧洲:" -#,##0.0, "M"
我也可以在 VBA 窗口中使用
实现这一点
ActiveCell.NumberFormat = """欧洲:"" #,##0.0, ""M""; ""欧洲:"" -#,##0.0, ""M"""
这是问题所在:我正在运行一个循环函数,该函数从不同的工作表中获取值并将它们粘贴到摘要表上 - 我需要区域(例如“欧洲”)显示在数字旁边,但我不想为我的 9 个区域编写 9 个不同时间的循环函数代码。
我尝试的解决方案,在这里我只是为每个循环更改变量“区域”的值:
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
将数字格式化为“Europe: #,##0.0, M; Europe: -#,##0.0, M” - 它根本不显示数字,只显示这个字符串。
但是,如果我在即时窗口中使用 ?numformat 来返回字符串的值,然后复制/粘贴该值以便
Selection.NumberFormat = """欧洲:"" #,##0.0, ""M""; ""欧洲:"" -#,##0.0, ""M"""
然后,我得到正确的数字格式,“欧洲:22.8 M”
但这对我没有帮助,因为现在区域名称又被硬编码了。谁能帮助找出我做错了什么,或找出替代解决方案?
干杯,
B
【问题讨论】:
-
源数据中是否存在区域格式?
-
源数据格式为标准数字格式,带有千位分隔符,没有小数点。它需要保持这种状态。区域是每个选项卡的名称。
-
您可以创建一个像
Const MasterNumFormat = """<CURR>:"" #,##0.0, ""M"";""<CURR>:"" -#,##0.0, ""M"""这样的常量字符串,然后使用numformat = Replace(MasterNumFormat,"<CURR>",region)而不是构造它。