在Excel中有条件地着色图表

通过值着色图表

你好!

我正在尝试通过VBA在Excel中为graphics(任务跟踪器)着色。 这个想法是给所有“类别”上色一种颜色 – 从视觉上来说,这意味着要把每个“行”上的所有条纹都变成一种特定的颜色。 我使用下面的代码,我从http://peltiertech.com/vba-conditional-formatting-of-charts-by-category-label/复制:

Sub ColorByCategoryLabel() Dim rPatterns As Range Dim iCategory As Long Dim vCategories As Variant Dim rCategory As Range Set rPatterns = ActiveSheet.Range("A1:A5") With ActiveChart.SeriesCollection(2) vCategories = .XValues For iCategory = 1 To UBound(vCategories) Set rCategory = rPatterns.Find(What:=vCategories(iCategory)) .Points(iCategory).Format.Fill.ForeColor.RGB = rCategory.Interior.Color Next End With End Sub 

我无法弄清楚什么是错的。

基本上,我有一个系列(系列2),水平(类别)轴标签由1-5的整数组成。 这个类别决定了条的垂直位置,但我也想根据这个垂直位置,根据范围内的颜色(a1:a5)对这个系列中的每个条进行着色 – 这正是这个代码看起来是这样做。

任何build议,至于代码,或者也许,根据“水平(类别)轴”的值的颜色条形图的任何替代方法?

谢谢!

那么,我通过一步一步find了解决问题的答案。 我无法想象这是根据它们的高度水平条形图最简单的方法,但它的工作原理。

 Sub ColorByCategoryLabel() Dim iCategory As Long Dim vCategories As Variant Dim rCategory As Range Dim CurColor As Double Dim CurColorIndex As Long Dim CurHeight As Double CurHeight = 0 CurColorIndex = 1 CurColor = ActiveSheet.Cells(CurColorIndex + 1, 10).Interior.Color ActiveSheet.ChartObjects("Chart 1").Select With ActiveChart.SeriesCollection(2) vCategories = .XValues For iCategory = 1 To UBound(vCategories) If .Points(iCategory).Top > CurHeight Then CurColorIndex = CurColorIndex + 1 CurColor = ActiveSheet.Cells(CurColorIndex + 1, 10).Interior.Color CurHeight = .Points(iCategory).Top End If .Points(iCategory).Format.Fill.ForeColor.RGB = CurColor Next End With End Sub 

您将需要修改该行

 Curcolor = ActiveSheet.Cells(CurColorIndex+1,10).Interior.Color 

要正确指定要复制背景色的单元格。

顺便说一下,如果有人对时间追踪器感兴趣,可以在这里find: https ://drive.google.com/file/d/0B85fvjQDbl3lUVpPNmdGT1VkWW8/view?usp=sharing