设置 X 轴标签相对于 sheet 和范围内的最后一行

Set X Axis Labels Relative to sheet and last row in range

目标: 创建图表并将 X 轴标签设置为等于 sheet 范围内的范围和范围内的最后一行(值,而不是公式)。完整的宏将循环遍历 wb 中的每个 sheet,并在每个 sheet.

中创建新图表。

完整代码:

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"",B:C,2,FALSE)=0,"""",VLOOKUP(""FX Allocation & Hedging"",B:C,2,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, 1, 1, 1, False)

    'Chart setup
        With cht.Chart
          .SetSourceData Source:=rng
          .SeriesCollection(1).XValues = ("='" & Sht & "'!$AA:$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:$AA" & Lastrowdata)

当在单个 sheet 中进行测试时,没有循环遍历它们我有这样的代码 .SeriesCollection(1).XValues = "='BMA'!$AA:$AA17" 来测试它,一切正常,但我需要是动态的。

只漏了一件事:

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