gpt4 book ai didi

excel - 获取datalabel标题源单元格地址

转载 作者:行者123 更新时间:2023-12-04 20:26:30 25 4
gpt4 key购买 nike

我很茫然,不确定是否有办法做到这一点。

我有一个带有数据标签的图表。数据标签标题链接到单元格值。对于每个数据标签,我需要获取作为标题来源的单元格的地址。

数据标签源是使用格式数据标签属性管理器手动设置的。

enter image description here

不幸的是,我尝试过的一切都只是返回标题的文本值——没有什么能给我我需要的单元格地址。

例如,当我运行以下命令时,我得到所有这些行的相同值 - 它只是打印标题中的文本。

我可以使用 dl.parent.parent.formula 获得整个系列的单元格范围 ($H$9:$H$22) ,但我需要的是每个数据标签的特定单元格地址(即第一个标签:$H$9,第二个标签:$H$10 等)

Private Sub test()
Dim C As Chart
Dim w As Worksheet
Set w = Sheet2
Set C = Sheet2.ChartObjects("Chart 1").Chart

Dim dl As DataLabel
For Each dl In C.FullSeriesCollection(2).DataLabels
Debug.Print dl.Text
Debug.Print dl.Caption
Debug.Print dl.Formula
Debug.Print dl.FormulaLocal
Debug.Print dl.FormulaR1C1
Debug.Print dl.FormulaR1C1Local
Next
End Sub

最佳答案

这是遵循 BigBen 建议的工作解决方案。如果有人想发布更好/更清洁的方法,我很乐意将其标记为答案。

Sub ChartConditions()
Dim C As Chart
Dim W As Worksheet
Dim S As Series
Set W = Sheet2
Set C = Sheet2.ChartObjects("Chart 1").Chart
Set S = C.FullSeriesCollection(2)

Dim sForm As String
Dim sAdd As String
Dim sRange As Range

sForm = S.Formula
sAdd = Split(sForm, ",")(2)
Set sRange = Range(sAdd)

Dim dlRange As Range
Set dlRange = Intersect(Range("H1").EntireColumn, sRange.EntireRow)

Dim i As Long
i = 0

Dim dl As DataLabel
For Each dl In S.DataLabels
i = i + 1
Dim r As Long, b As Long, g As Long
getRGB3 dlRange(i, 1), r, b, g
dl.Parent.Format.Fill.ForeColor.RGB = RGB(r, g, b)
Next
End Sub

Private Sub getRGB3(rcell As Range, r As Long, b As Long, g As Long)
Dim C As Long

C = rcell.DisplayFormat.Interior.Color
r = C Mod 256
g = C \ 256 Mod 256
b = C \ 65536 Mod 256

End Sub

关于excel - 获取datalabel标题源单元格地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59141489/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com