快速着色非连续的细胞块

时间:2012-11-02 21:25:31

标签: vb.net excel

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

现在我正在维护每种颜色的范围,每当我找到需要该颜色的新块时,我会使用现有范围和新块的并集。然后在最后我为该范围着色。不幸的是,这对于大型案件来说真的很慢而且有点儿。有没有更好的方法呢?我觉得要着色几千个细胞不应该花这么长时间。 :)

修改 以下代码使用条件格式解决了这个问题(假设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包含“CORRECT”,我希望A42:H42(包含它的行)为绿色)。这样做的任何提示?

1 个答案:

答案 0 :(得分:0)

您可以使用条件格式。

对于同一行中的着色单元格,您需要使用公式条件格式。例如,如果您希望在A中的值有条件地格式化A,C和D列,您可以执行类似这样的操作(伪代码):

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

这很可能会转化为:

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

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

另外,最初在建议条件格式时我正在谈论手动执行它。您是否有必要使用VBA执行此任务?