gpt4 book ai didi

excel - 给定第一行字段中的特定枢轴项,获取第二行字段的给定枢轴项

转载 作者:行者123 更新时间:2023-12-04 20:52:18 24 4
gpt4 key购买 nike

我有一个带有两个嵌入式行标签和一个数据变量的数据透视表(见下文)。给定 Rowlabel1 的特定枢轴项,我想访问给定索引的 Rowlabel2 的枢轴项。

这个问题( List excel pivot items of the second row field (multiple row fields) given a particular pivot item in the first row field )非常接近我的问题,但不完全是我需要的。我希望有一种方法可以在不借助单独的子程序的情况下获取该项目。

Rowlabel1 Rowlabel2 Value
a A 1
B 0
C 3
b D 2
E 8
c F 5

例如,我想获取 Rowlabel1 的第 2 项(“E”)的 Rowlabel2 的第 2 项。
该属性(property)
RowFields("Rowlabel2").PivotItems(2).Caption

返回“B”,而不是“E”

最佳答案

您可以遍历数据透视表的行,即 PivotTable.PivotRowAxis.PivotLines .
他们第一次离开PivotLineCells包含 RowField.PivotItems ,可以比较和计算。

Private Sub GetIt()
MsgBox GetPivotItem(ActiveSheet.PivotTables(1), 2, 2)
End Sub

Private Function GetPivotItem(ByRef pt As PivotTable, _
ByRef index1 As Long, ByRef index2 As Long) As String
Dim pl As PivotLine
Dim counter1 As Long, counter2 As Long
Dim remember1 As String, remember2 As String

For Each pl In pt.PivotRowAxis.PivotLines
If pl.LineType = xlPivotLineRegular Then
If pl.PivotLineCells(1).PivotItem.Caption <> remember1 Then
remember1 = pl.PivotLineCells(1).PivotItem.Caption
remember2 = pl.PivotLineCells(2).PivotItem.Caption
counter1 = counter1 + 1
counter2 = 1
ElseIf pl.PivotLineCells(2).PivotItem.Caption <> remember2 Then
remember2 = pl.PivotLineCells(2).PivotItem.Caption
counter2 = counter2 + 1
End If
If counter1 = index1 And counter2 = index2 Then
GetPivotItem = pl.PivotLineCells(2).PivotItem.Caption
Exit For
End If
End If
Next pl
End Function

以上适用于在单独列中具有行字段的可透视布局(如您的屏幕截图, PivotLine.PivotLineCells.Count > 1)。
如果您切换到在同一列中缩进行字段的布局,请改用:
Private Function GetPivotItemNew(ByRef pt As PivotTable, _
ByRef index1 As Long, ByRef index2 As Long) As String
Dim pl As PivotLine
Dim counter1 As Long, counter2 As Long

For Each pl In pt.PivotRowAxis.PivotLines
If pl.LineType = xlPivotLineRegular Then
If pl.PivotLineCells(1).PivotField = pt.RowFields(1) Then
counter1 = counter1 + 1
counter2 = 0
End If
If pl.PivotLineCells(1).PivotField = pt.RowFields(2) Then counter2 = counter2 + 1
If counter1 = index1 And counter2 = index2 Then
GetPivotItemNew = pl.PivotLineCells(1).PivotItem.Caption
Exit For
End If
End If
Next pl
End Function

关于excel - 给定第一行字段中的特定枢轴项,获取第二行字段的给定枢轴项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56236203/

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