在Excel中的单元格内着色部分文本

Modified on: Mon, 17 Dec 2018 15:00:02 +0800

在Excel中,有几种方法可以根据其值动态为完整单元格着色,但有没有办法根据单元格的值动态为单元格着色?

例如,假设我正在构建一个类似于以下内容的报告:

 _________________________
|       |    Dec    | Nov |
|_______|___________|_____|
|Gross R| $75 (-25%)| $100|
|_______|___________|_____|
|Net Inc| $55 (+10%)| $50 |
|_______|___________|_____|

在这种情况下,我只希望为百分比值(-25%)和(+ 10%)着色,而不是美元值$ 75和$ 55,它们也在单元格中。除了问题之外,着色应该是动态的(绿色表示正值,红色表示负值),这些单元格是引用(因此手动着色不在表格中)。

我尝试使用内置的TEXT()函数,但这也不起作用。具体来说,我尝试了=TEXT(A1,"$##")&amp;" "&amp;TEXT(A2,"[Green]0%;[Red](-0%)")其中< code> A1 是美元金额的单元格引用,A1是百分比delta的单元格引用。

令人沮丧的是,自定义格式A2在应用于整个单元格时(通过自定义数字格式化部分)工作得很好,但是当通过[Green]0%;[Red](-0%)函数应用它时它会停止工作。那么,我如何自定义单元格中的部分值?

作者:Moses

最佳答案

我发现有两种方法可以解决这个问题,而且两种方法都不是最佳的。

第一种方法是将字符串分成两个单独的列,这样我就可以使用前面描述的自定义格式之一来设置其颜色。这不是一个理想的解决方案,因为我不得不在报告的“外观和感觉”上妥协,以便容纳额外的列。

第二种方法是使用VBA /宏,虽然我选择在这种特定情况下避免使用它,但它可以完成任务。虽然我不会打印出整个工作代码,但它必须归结为:

  1. 查找要调整的单元格(通过ActiveCell或循环)
  2. 使用Instr函数在字符串中查找要修改颜色的位置
  3. 如果文本长度是可变的,请再次使用Instr在字符串中查找要停止颜色的位置
  4. 使用Characters(start, length)功能突出显示要修改的确切字符,并传入之前找到的值。
  5. 使用Font.Color = RGB(r,g,b)
  6. 更改颜色 醇>
作者:Moses

相关问答

添加新评论