道格拉斯(Douglas)遇到一些他需要的自定义格式问题。他创建了一种自定义格式,该格式以他想要的方式显示大量数字,例如,$ 1,000,000显示为$ 1.0M,$ 1,000显示为$ 1.0K。此格式如下:

[> 1000000] $#。0 ,,“ M”; [> 1000] $#。0,“ K”; $#,## 0.0。道格拉斯想知道如何调整自定义格式,以使负数以相同的方式显示,但周围带有括号的红色显示,例如($ 1.0K)。

不幸的是,使用单个自定义格式无法实现您想要的操作。原因是因为单个自定义格式只能包含四个条件,每个条件之间用分号分隔。这是自定义格式的一般语法:

positive; negative; zero; text

请注意,当值是正数时使用第一种格式,当值是负数时使用第二种格式,当值正好为零时使用第三种格式,当值是文本时使用第四种格式。虽然这是自定义格式的常规语法,但是您可以以自己的方式“捏造”格式。考虑您使用的格式:

[>1000000]$#.0,,"M";[>1000]$#.0,"K";$#,##0.0

请注意,根据一般语法,第一个分号之前的格式将用于正值,下一个格式将用于负值,第三个用于零值。但是,这不是Excel转换此自定义格式的方式。它将其翻译为“如果大于1,000,000,请执行此操作;如果大于1,000,请执行此操作;否则请执行”。格式中没有正负含义。实际上,任何负值都将被视为默认处理,即第三种格式。

您试图做的是定义两个积极的条件(一个代表百万,一个代表数千)和两个消极的条件(再次代表百万和数千)。无论您如何尝试将其组合在一起,都无法以单一的自定义格式完成此操作。相反,您应该使用两种自定义格式,例如:

[>=1000000]$#.0,,"M ";[>=1000]$#.0,"K ";$#,##0.0 [Red][<=-1000000]($#.0,,"M");[Red][<=-1000]($#.0,"K");[Red]($#,##0.0)

对于正值,将使用第一种格式;它是技巧第一部分建议的原始格式的变体。第二种格式将与负值一起使用。这些自定义格式将需要根据单元格中的值手动应用。

要获得所需的格式,这似乎需要完成很多工作。可以创建一个应用格式的宏,但是该宏并不是一件容易的事。它将需要检查单元格中的值是什么,选择正确的格式,构造格式,将其填充为该单元格的自定义格式,然后移至下一个单元格。

某些人可能还认为您可以在这种情况下使用条件格式。但是,条件格式不允许您修改单元格中数字的表示形式。虽然可以检查值(例如,超过一千或一百万),但是您无法对单元格中的值进行除法,舍入和添加后缀。您也无法执行将括号添加到负值之类的操作。

_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。

本技巧(10226)适用于Microsoft Excel 97、2000、2002和2003。您可以在以下位置找到适用于Excel功能区界面(Excel 2007和更高版本)的本技巧的版本:

链接:/ excelribbon-Handling_Negative_Numbers_in_a_Complex_Custom_Format [以复杂的自定义格式处理负数]。