1

我有一个应用程序可以生成一个(相当大的)电子表格,其中包含需要进行颜色编码的用户输出。当我生成数据时,我发现需要着色的块,但是如果我一次只做一个块,给它们着色会很耗时。我想做的是维护一大组不连续的单元格,并使用一个 Excel 互操作调用对其进行着色。

现在我为每种颜色维护一个范围,每次我找到一个需要该颜色的新块时,我都会将现有范围和新块合并。然后在最后我为那个范围着色。不幸的是,对于大型案例来说,这真的很慢而且有点麻烦。有没有更好的方法来做到这一点?我觉得给几千个细胞上色不应该花这么长时间。:)

编辑 以下代码使用条件格式解决了它(假设 B 列中存在 CORRECT 和 INCORRECT 字样)

With newSheet.Range("B:B")
    .FormatConditions.Add(Excel.XlFormatConditionType.xlCellValue, Excel.XlFormatConditionOperator.xlEqual, "CORRECT")
    .FormatConditions(1).Interior.ColorIndex = 4

    .FormatConditions.Add(Excel.XlFormatConditionType.xlCellValue, Excel.XlFormatConditionOperator.xlEqual, "INCORRECT")
    .FormatConditions(2).Interior.ColorIndex = 3
End With

我仍然想做的唯一一件事是颜色不仅仅是包含“正确”的单元格。相反,我想为图表中的整行着色(例如,如果 B42 包含“正确”,我希望 A42:H42(包含它的行)为绿色)。有什么建议吗?

4

1 回答 1

0

您可以使用条件格式。

至于同一行中的着色单元格,您需要使用公式条件格式。例如,如果您希望 A、C 和 D 列根据 E 中的值有条件地格式化,您可以执行以下操作(伪代码):

对于当前行的 A、C 和 D 列,将条件格式设置为公式:基于列 $E 和当前行的谓词

这很可能会转化为:

=IF($Erow=something, 1, 0)

http://msdn.microsoft.com/en-us/library/office/ff822801.aspx

此外,最初在建议条件格式时,我是在谈论手动执行它。您是否有理由需要使用 VBA 来完成此任务?

于 2012-11-05T17:59:18.390 回答