通过月份选择器更改的动态组合图

时间:2020-09-16 14:24:39

标签: excel

我正在尝试构建一个仪表板,该仪表板可以基于“月份选择器”来更新详细信息。我有一个使用公式的命名范围:

=OFFSET('Labor Data'!$B$1,MATCH(MATCH(Dashboard!$T$3,Dashboard!$C$3:$N$3,0)-1,'Labor Data'!$A:$A),0,MAX(IF('Labor Data'!$A:$A=MATCH(Dashboard!$T$3,Dashboard!$C$3:$N$3,0),ROW('Labor Data'!$A:$A)))-MATCH(MATCH(Dashboard!$T$3,Dashboard!$C$3:$N$3,0),'Labor Data'!$A:$A,0)+1,5)

我知道它有效。它正确地突出显示了我在数据工作表中期望的范围。但是,当我将范围的名称插入“图表数据范围”字段时,“水平轴标签”会解析,并且当我更改月份时不会更改。有什么方法可以使水平轴保持动态?

enter image description here

enter image description here

1 个答案:

答案 0 :(得分:0)

我放弃了指定的范围,并将解决方案写入VBA,当下拉框的值更改时触发该解决方案。

Private Sub Worksheet_Change(按有效期的每月有效期)

Set dash = Worksheets("Dashboard")
Set labor = Worksheets("Labor Data")

setMonth = dash.Range("T3").Value

If Not Intersect(monthSel, Range("T3")) Is Nothing Then

    monthNum = Application.WorksheetFunction.Match(setMonth, dash.Range("C3:N3"), 0)
    
    Set dynRangeTop = labor.Range("A:A").Find(monthNum, LookIn:=xlValues, LookAt:=xlWhole)
    Set dynRangeBot = labor.Range("A:A").Find(monthNum, LookIn:=xlValues, LookAt:=xlWhole, SearchDirection:=xlPrevious)
    Set chartRng = labor.Range("C" & dynRangeTop.Row & ":" & "G" & dynRangeBot.Row)
    
    dash.ChartObjects("MonthSum").Chart.SetSourceData Source:=chartRng, PlotBy:=xlColumns
End If

End Sub