快速着色不连续的单元格块

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

现在我正在为每种颜色保留一个范围,每当我find一个需要这种颜色的新块时,我把现有范围和新块的联合。 然后在最后我着色这个范围。 不幸的是,这对于大型案例来说确实很慢,而且是一种错误。 有没有更好的方法来做到这一点? 我觉得着色几千个细胞不应该花这么长时间。 🙂

编辑下面的代码通过条件格式解决了它(假设列B中存在“正确”和“错误”两个字)

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(包含它的行)是绿色的)。 任何提示做这个?

您可以使用条件格式。

至于同一行中的着色单元格,则需要使用公式条件格式。 例如,如果你想要列E,C和D的条件格式,你可以做这样的事情(伪代码):

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

这很可能会翻译成以下内容:

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

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

此外,最初build议条件格式时,我正在谈论手动做它。 为什么你需要使用VBA来完成这个任务是否有原因?