使用自定义数字格式在同一个 Excel 中使用多种货币数字格式

使用自定义数字格式在同一个 Excel 中使用多种货币数字格式

我有一个 Excel,其中有多列数值/金额,它们在不同列中都以不同的货币表示。一列是一种货币。

我已将区域设置设为默认货币格式,因此设置了一列。对于所有其他列,我需要使用 Excel 中的自定义数字格式将它们设置为特定的货币格式。

我知道如何为每种货币添加货币符号,因此在此跳过该部分。我的问题是不同货币的逗号分隔符不同。

为了说明起见,我这里有三种格式:

  1. 货币 1:所有逗号分隔的三位数长度,但没有任何小数点。
  2. 货币 2:全部以逗号分隔,三位数字,带有 3 位小数点。
  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

相关内容