将X轴标签相对于范围设置为工作表和最后一行

问题描述

目标: 创建图表并将X轴标签设置为等于该工作表中的范围以及范围的最后一行(值,而不是公式)。完整的宏将遍历wb中的每个工作表,并使用该工作表中的数据在每个工作表中创建新的图形。

完整代码

Sub test()
Dim Sht As Worksheet
'Create Graph Data: Make Local Mgmt Details Short names
'Create graph
'Size Graph
Dim rng As Range,rngChart As Range,XLabelrng As Range
Dim Lastrowdata As Long
Dim cht As Object

For Each Sht In Worksheets

    'Local Management Details Mapping (graph data)
        With Sht
            .Range("AA8") = "=IFERROR(IF(VLOOKUP(""FX Allocation & Hedging"",B:C,2,FALSE)=0,"""",""FX""),"""")"
            .Range("AB8") = "=IFERROR(IF(VLOOKUP(""FX Allocation & Hedging"",VLOOKUP(""FX Allocation & Hedging"",FALSE)),"""")"
            .Range("AA9:AA18") = "=IF(E9=""Yield Curve"",""YC"",IF(E9=""Asset Allocation"",""A. Alloc"",IF(E9=""Security Selection"",""Sec Sel"",IF(E9=""Leverage"",""Lev"",IF(E9=""Intra-Day"",""Intra"",IF(E9=""Pricing Differences"",""Pric"",IF(E9=""Exclusions"",""Exc"",IF(E9=""Interest Rate Derivative Basis"",""IRD"",IF(E9=""Implied Volatility"",""Vol"",IF(E9=""Mortgage"",""Mtg"",IF(E9=""Residual"",""Res"",IF(E9=""Others"",""Others"",""Others""))))))))))))"
            .Range("AB9:AB18") = "=IF(I9="""",I9)"
            '.Range("AA8:AB18").Font.Color = vbWhite
        End With
    
    'Your data range for the chart and x-axis labels
        Lastrowdata = [AB:AB].Find("*",xlValues,xlByRows,xlPrevIoUs).Row
        Set rng = Sht.Range("AB8:AB" & Lastrowdata)
    
    'Chart Location
        Set rngChart = Range("K9:W18")
    
    'Create a chart (style,XlChartType,Left,Top,Width,Height,NewLayout)
        Set cht = Sht.Shapes.AddChart2(203,xlColumnClustered,1,False)

    'Chart setup
        With cht.Chart
          .SetSourceData Source:=rng
          .SeriesCollection(1).XValues = ("='" & Sht & "'!$AA$8:$AA" & Lastrowdata)
          .HasTitle = False
          .HasLegend = False
          .Axes(xlValue).MajorUnit = 50
        End With

    'Chart location
        With cht
          .Left = rngChart.Left
          .Top = rngChart.Top
          .Width = rngChart.Width
          .Height = rngChart.Height
        End With

Next Sht

End Sub

问题: 我知道这里的语法有误,但是应该可以让您清楚地了解我要查找的内容.SeriesCollection(1).XValues = ("='" & Sht & "'!$AA$8:$AA" & Lastrowdata)

在单张纸上进行测试时,没有遍历它们,我有类似.SeriesCollection(1).XValues = "='BMA'!$AA$8:$AA17"代码对其进行测试,并且一切正常,但是我需要保持动态。

解决方法

只缺少一件事:

.SeriesCollection(1).XValues = "='" & Sht.Name & "'!$AA$8:$AA" & Lastrowdata