循环遍历筛选数据透视表,将每个可见值添加到范围中的下一个单元格

时间:2018-06-20 14:38:31

标签: excel excel-vba vba

我目前处于停滞状态,需要遍历Filtered PivotTable,然后将每个可见值添加到预定范围内的下一个单元格。

到目前为止,我已经整理了以下业余vba代码。但是我的输出并不理想。在给定范围内的所有单元格中似乎只添加了最终值。

请参阅“编辑”,代码正在从数据透视表中提取所有数据,忽略了适当的过滤器,并且一旦到达Union(A,B,C,D)的结尾就不会停止

Private Sub GenerateConsumableCard_Click()

Dim Pt As PivotTable
Dim Pf As PivotField
Dim Pi As PivotItem
Dim C As Range

Set Pt = Sheets("Cards").PivotTables("PivotTable1")
Set Pf = Pt.PivotFields("Consumable Name")
Set KB1 = Sheets("Cards").Range("D11")
Set KB2 = Sheets("Cards").Range("K11")
Set KB3 = Sheets("Cards").Range("D22")
Set KB4 = Sheets("Cards").Range("K22")
Set CRange = Union(KB1, KB2, KB3, KB4)

With Pt
    .PivotCache.Refresh
    .PivotCache.MissingItemsLimit = xlMissingItemsNone

For Each C In CRange.Cells
    For Each Pi In Pf.PivotItems
        If Pi.Visible = True Then
           C.Value = Pi
        End If
    Next Pi
Next C

End With
End Sub

我所总结的想法是:根据数据透视表中当前存在的信息,范围内的每个单元格将具有不同的值。 即数据透视表中的第一个可见值将进入单元格D11,第二个进入单元格K11,第三个进入单元格D22 ....等等。

任何帮助将不胜感激!

编辑:

似乎我有多个问题。我相信我可能会引用我的数据透视表的完全错误的部分吗?下面是当前表格的图像。

像以前一样,我想将“ Consumable Name”下的各个值放入“ CRange”中的单元格值中。

ExamplePivotTable

编辑2:

因此,我还做了一些更改,但是没有一个起作用。

Private Sub GenerateConsumableCard_Click()

Dim Pt As PivotTable
Dim Pf As PivotField
Dim Pi As PivotItem
Dim C As Range

Set Pt = Sheets("KanBans").PivotTables("PivotTable1")
Set Pf = Pt.PivotFields("Consumable Name")
Set KB1 = Sheets("KanBans").Range("D11")
Set KB2 = Sheets("KanBans").Range("K11")
Set KB3 = Sheets("KanBans").Range("D22")
Set KB4 = Sheets("KanBans").Range("K22")
Set CRange = Union(KB1, KB2, KB3, KB4)

With Pt
    .PivotCache.Refresh
    .PivotCache.MissingItemsLimit = xlMissingItemsNone

For Each Pi In Pf.VisibleItems
For Each C In CRange.Cells
           C.Value = Pi
     Next
Next

End With
End Sub

现在它似乎正确地遍历了数据透视表,但是忽略了放置在数据上的筛选器,并提取了所有项目直到最后一项。 我相信我可能也对以下内容感到困惑:

For Each C In CRange

,因为它正确地遍历了范围,但是一旦所有范围都填满,它就不会停止。

温馨提示

0 个答案:

没有答案