我在Excel中遇到以下问题:
我有一个动态表格,它将提供图形(堆积区域),查找函数的结果返回一个表格,该表格将隐藏“空”的值
这里的问题是,对于不同的选择参数(国家/地区),我获得了不同数量的数据系列(市场参与者)并且顺序不同。
我在该表中有一个帮助列,它以不同的颜色返回与我想要的公司相同的行。
由于可能有更多的MP,我在表中有一些空间,然后过滤表并生成图表。
问题在于我首先尝试:计算系列,因此我不会在尝试引用VBA上的缺失系列时出错(例如,当我有5个系列的代码但查找只返回3)即可。第二个:识别带有公司名称的行(DT)并使其成为图表中的特定颜色,其他颜色将是不同的灰色阴影
我想要做的是(只有部分因为没有空间):
'Only display non-zero values in the chart chart
Sheets("Financials").ListObjects("Table2").Range.AutoFilter Field:=7
Sheets("Financials").ListObjects("Table2").Range.AutoFilter Field:=7, Criteria1:= _
"IN"
Dim iSrs As Long, nSrs As Long
If Sheets("Financials").Range("f98") = "" Then
GoTo EndPie:
End If
With Worksheets("NatCo Dashboard").ChartObjects("Chart 9")
nSrs = Worksheets("NatCo Dashboard").ChartObjects("Chart 9").Chart.SeriesCollection.Count
For iSrs = 1 To nSrs
Select Case nSrs
Case 1
Select Case Sheets("Financials").Range("m98")
Case "DT"
Worksheets("NatCo Dashboard").ChartObjects("Chart 9").Chart.SeriesCollection(iSrs).Format.Fill.ForeColor.RGB = RGB(226, 0, 116)
Case "Orange"
Worksheets("NatCo Dashboard").ChartObjects("Chart 9").Chart.SeriesCollection(iSrs).Format.Fill.ForeColor.RGB = RGB(255, 153, 0)
Case "EE"
Worksheets("NatCo Dashboard").ChartObjects("Chart 9").Chart.SeriesCollection(iSrs).Format.Fill.ForeColor.RGB = RGB(52, 161, 160)
Case Else
Worksheets("NatCo Dashboard").ChartObjects("Chart 9").Chart.SeriesCollection(iSrs).Format.Fill.ForeColor.RGB = RGB(217, 217, 217)
End Select
Case 2
Select Case Sheets("Financials").Range("m98")
Case "DT"
Worksheets("NatCo Dashboard").ChartObjects("Chart 9").Chart.SeriesCollection(iSrs).Format.Fill.ForeColor.RGB = RGB(226, 0, 116)
Worksheets("NatCo Dashboard").ChartObjects("Chart 9").Chart.SeriesCollection(iSrs).Format.Fill.ForeColor.RGB = RGB(217, 217, 217)
Case "Orange"
Worksheets("NatCo Dashboard").ChartObjects("Chart 9").Chart.SeriesCollection(iSrs).Format.Fill.ForeColor.RGB = RGB(255, 153, 0)
Worksheets("NatCo Dashboard").ChartObjects("Chart 9").Chart.SeriesCollection(iSrs).Format.Fill.ForeColor.RGB = RGB(217, 217, 217)
Case "EE"
Worksheets("NatCo Dashboard").ChartObjects("Chart 9").Chart.SeriesCollection(iSrs).Format.Fill.ForeColor.RGB = RGB(52, 161, 160)
Worksheets("NatCo Dashboard").ChartObjects("Chart 9").Chart.SeriesCollection(iSrs).Format.Fill.ForeColor.RGB = RGB(217, 217, 217)
Case Else
Worksheets("NatCo Dashboard").ChartObjects("Chart 9").Chart.SeriesCollection(iSrs).Format.Fill.ForeColor.RGB = RGB(217, 217, 217)
Worksheets("NatCo Dashboard").ChartObjects("Chart 9").Chart.SeriesCollection(iSrs).Format.Fill.ForeColor.RGB = RGB(190, 190, 190)
End Select
Select Case Sheets("Financials").Range("m99")
Case "DT"
Worksheets("NatCo Dashboard").ChartObjects("Chart 9").Chart.SeriesCollection(iSrs).Format.Fill.ForeColor.RGB = RGB(217, 217, 217)
Worksheets("NatCo Dashboard").ChartObjects("Chart 9").Chart.SeriesCollection(iSrs).Format.Fill.ForeColor.RGB = RGB(226, 0, 116)
Case "Orange"
Worksheets("NatCo Dashboard").ChartObjects("Chart 9").Chart.SeriesCollection(iSrs).Format.Fill.ForeColor.RGB = RGB(217, 217, 217)
Worksheets("NatCo Dashboard").ChartObjects("Chart 9").Chart.SeriesCollection(iSrs).Format.Fill.ForeColor.RGB = RGB(255, 153, 0)
Case "EE"
Worksheets("NatCo Dashboard").ChartObjects("Chart 9").Chart.SeriesCollection(iSrs).Format.Fill.ForeColor.RGB = RGB(217, 217, 217)
Worksheets("NatCo Dashboard").ChartObjects("Chart 9").Chart.SeriesCollection(iSrs).Format.Fill.ForeColor.RGB = RGB(52, 161, 160)
Case Else
Worksheets("NatCo Dashboard").ChartObjects("Chart 9").Chart.SeriesCollection(iSrs).Format.Fill.ForeColor.RGB = RGB(217, 217, 217)
Worksheets("NatCo Dashboard").ChartObjects("Chart 9").Chart.SeriesCollection(iSrs).Format.Fill.ForeColor.RGB = RGB(190, 190, 190)
End Select
Case 3
然后就是这样,直到案例5(可能的最大数量)
有没有人知道我可能做错了什么,甚至更好或更合适(更干净)的方式呢?
非常感谢!