设置 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
目标: 创建图表并将 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