我有一个应用程序生成一个(非常大的)电子表格,其中包含需要进行颜色编码的用户输出。当我生成数据时,我发现需要着色的块,但如果我一次只执行一个块,则对它们着色是很费时间的。我想做的是维护一个大的不连续的单元格组,并使用一个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(包含它的行)为绿色)。这样做的任何提示?
答案 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执行此任务?