如何解决将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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。