我有一个 Excel,其中有多列数值/金额,它们在不同列中都以不同的货币表示。一列是一种货币。
我已将区域设置设为默认货币格式,因此设置了一列。对于所有其他列,我需要使用 Excel 中的自定义数字格式将它们设置为特定的货币格式。
我知道如何为每种货币添加货币符号,因此在此跳过该部分。我的问题是不同货币的逗号分隔符不同。
为了说明起见,我这里有三种格式:
- 货币 1:所有逗号分隔的三位数长度,但没有任何小数点。
- 货币 2:全部以逗号分隔,三位数字,带有 3 位小数点。
- 货币 3:INR 样式 - 初始以三位数分隔,之后以两位数分隔,并带有小数点。
货币 3 通过 Windows 上的默认区域格式完成。我尝试对货币 1 和 2 使用以下格式:
Currency 1:
[>=1000000000]##\,###\,###\,##0;[>=1000000]##\,###\,##0;[>=1000] ##\,##0;##,##0
Currency 2:
[>=1000000000]##\,###\,###\,##0.000;[>=1000000]##\,###\,##0.000;[>=1000] ##\,##0.000;##,##0.000
但是,我在 Excel 中收到错误,提示无法接受上述格式。如果我[>=1000000000]##\,###\,###\,##0
从自定义格式中删除万亿部分,格式就会起作用。所以我猜问题出在那里,但我搞不清楚。
预期输出:
| Currency 1 | Currency 2 | Currency 3 |
|-----------------|---------------------|---------------------|
| 1,000,000 | 1,000,000.240 | 10,00,000.24 |
| 1,000 | 1,000.240 | 1,000.24 |
| 1,000,000,000 | 1,000,000,000.240 | 1,00,00,00,000.24 |
| 100 | 100.240 | 100.24 |
| -1,000,000 | -1,000,000.240 | -10,00,000.24 |
| -1,000 | -1,000.240 | -1,000.24 |
| -1,000,000,000 | -1,000,000,000.240 | -1,00,00,00,000.24 |
| -100 | -100.240 | -100.24 |
你能帮我这里的问题出在哪里吗?
答案1
您的自定义格式有 3 个条件。但是,如规定的那样,您最多只能有 2 个条件这里:
自定义数字格式中只能有 2 个条件,每个条件之间用分号分隔。即第一个条件;第二个条件;然后是其他所有条件。
同一页面上给出的建议是,当您有超过 2 个条件时使用条件格式:
如果您需要更多条件,您可以使用条件格式来覆盖自定义数字格式。
答案2
如果您的标准小数分隔符是句点,而标准千位分隔符是逗号,并且您将数字分为三组,则无需在 numberformat 定义中重复逗号。使用千位分隔符一次就足够了,例如#,##0
或#,##0.000
。
恐怕无法在同一工作表中使用印地语和美式数字格式。除了条件格式之外,您还可以尝试将 NumberFormat 与 VBA 结合使用。您可以定义 UDF(在标准模块中),以文本形式(美式格式)生成格式化数字。
Function FCur1(x)
FCur1 = Format(x, "#,##0")
End Function
Function FCur2(x)
FCur2 = Format(x, "#,##0.000")
End Function
在单元格中直接使用函数时,格式应为General
,右对齐。
您还可以定义将数字转换为格式化文本的宏。在这种情况下,选择要格式化的区域并运行宏:
Sub Apply1()
Dim rg As Range
Selection.NumberFormat = "@"
For Each rg In Selection
rg.Value = FCur1(rg.Value) ' or FCur2 as necessary
Next rg
Selection.HorizontalAlignment = xlHAlignRight
End Sub