Excel 数字自定义格式

P S*_*dhu 5 excel excel-formula

我正在处理 Excel 工作表,其中有两种不同的货币。一种是澳元(AUD/$)),另一种是印度卢比(INR/Rs)。

要求是在同一个 Excel 工作表中,这两种货币的显示格式应符合国家标准,即美元为美元格式分组,卢比为印度卢比格式分组。

因此,我无法在区域和语言下的其他设置下使用自定义格式。

最终预期结果如下:

|Column A        |        Column B          |
|AUD             |        INR               | 
|$ 98,765,432.10 |        Rs 9,87,65,432.10 |
Run Code Online (Sandbox Code Playgroud)

我尝试使用单元格格式(在 Windows Excel 上按 Ctrl+1)并添加来自互联网的以下代码:

*[>=10000000]"Rs "##\,##\,##\,##0;[>=100000]"Rs " ##\,##\,##0;"Rs  "##,##0*  
Run Code Online (Sandbox Code Playgroud)

在这里,我观察到该代码仅适用于正数,对于任何负数都无效。

编写这段代码的标准是; 正数的格式;负数的格式;零的格式;因此文本的格式

[>=10000000]"Rs "##\,##\,##\,##0; --> is for positive number only
[>=100000]"Rs " ##\,##\,##0;      --> is for negative number only
"Rs  "##,##0                      --> is for zero 
Nothing for text                  --> for text (nothing specified)
Run Code Online (Sandbox Code Playgroud)

我不明白上面的代码是如何工作的!

我的部分理解是,代码使用条件格式,仅允许测试两个条件,例如 [蓝色];[红色] 所以两个请求:

  1. 如果有人可以帮助理解上述违反标准的代码,我将不胜感激。
  2. 如上所述,帮助我解决我的困难。

问候PSS

小智 1

我不太了解卢比的标准,但如果你碰巧还在考虑这个......

建议

如果您能够将数据(数字/计算)与数据的表示形式分开...您可以将所有数字放在一列中,然后使用 TEXT()、SUBSTITUTE() 和 CONCAT() 格式化您的数据供演示:

A1=987654532.10

B1=="Rs "&SUBSTITUTE(TEXT(D2,"## ## ## ###.00"), " ", ",")

截屏

根据我的尝试,看起来它会正确显示正数和负数。它还会删除前导数字并提供您发布的解决方案中缺少的小数点。

最大的缺点是这将 B1 提供为文本单元格。它确实只适合演示。计算必须在 A1 上......但至少 B1 会适当地反映这些。

第二个缺点是您失去了 A1 中负数上出现的任何自动着色。要将红色应用于负数的 B1...设置取决于 A1 < 0 的条件格式。

其他的东西

基本上,Excel 看起来只喜欢一种数字分组:一次三位数字。在数字格式文本中,逗号实际上并不告诉 Excel“输入逗号”。逗号通常表示“除以 1000”。

MS 提供了一个示例,例如 72567,格式为“#”,显示为 73(Excel 在此处四舍五入)。“#,###”将产生 72,567 ...但“#,#”或“##,00”也是如此。啊。

使用数字格式化接口很难(在这种情况下几乎不可能)对数字进行重新分组。

在您发布的格式文本中,作者决定强制 Excel 在特定位置放置逗号。他们通过为有限范围的正数提供明确的格式来做到这一点。将 , 放在格式字符串中会强制 Excel 无论如何插入逗号。作者获得/确保了准确的位置,但他们必须考虑不同长度的数量。这意味着他们无法保留所有四个 pos/neg/zero/text。相反,他们决定仅准确呈现三个范围(和文本):

  • “大”(> 10,000,000)
  • “有点大”(1,000,000)
  • “不大但积极”(>0)
  • 文本

值得注意的是,这意味着他们错过了一堆数字:所有负数,所有超过 1000 万的数字,以及所有零以上六位数的数字:100,000 到 999,999 意外地在前面包含一个(强制)逗号,即使不需要。765432.10 显示为卢比,7,65,432.10。