Выберите строку и столбцы сводной таблицы - PullRequest
0 голосов
/ 27 сентября 2018

enter image description here Мне нужна помощь в выборе диапазона сводной таблицы для копирования в другую электронную таблицу.Что мне нужно сделать, это скопировать все строки и столбцы для определенного значения «Project WBS», по которому будет производиться поиск.

В моем коде ниже я попытался использовать xlDataAndLabel, но он только дает мне Project WBS и PivotПредметы мне нужны.Он пропускает столбцы «Описание», «Сотрудник» и «Тип деятельности».Я не могу использовать .EntireRow.Copy, потому что, когда я иду на другую рабочую книгу для вставки, я получаю сообщение об ошибке, говорящее о слишком большом размере.

Ваша помощь очень ценится.

Макс

Sub getPivotData()

Dim PvtTbl As PivotTable
Set PvtTbl = Worksheets("Aug 18 Report").PivotTables("PivotTable1")
Worksheets("Aug 18 Report").Activate

Application.PivotTableSelection = True
PvtTbl.PivotSelect "GS136.548", xlDataAndLabel
Selection.Interior.Color = vbYellow
End Sub

1 Ответ

0 голосов
/ 27 сентября 2018

Вы можете попытаться изменить размер целевого диапазона меток до количества столбцов в сводной таблице

например,

Option Explicit
Public Sub test()
    Dim pvt As PivotTable, rng As Range
    Set pvt = ActiveSheet.PivotTables(1)
    With pvt.PivotFields("Project WBS").PivotItems("A").LabelRange
        Set rng = Worksheets(pvt.Parent.Name).Range(.Resize(.Rows.Count, pvt.TableRange1.Columns.Count).Address)
        Debug.Print rng.Address
    End With
End Sub

В следующей выделенной области указан адрес, возвращаемый оператором печати

enter image description here


Вот пример ссылки на сводку, если она находится в другой (открытой) книге:

Option Explicit
Public Sub test()
    Dim pvt As PivotTable, rng As Range
    Dim wb As Workbook, ws As Worksheet
    Set wb = Workbooks("Book3.xlsb")
    Set ws = wb.Worksheets("Sheet1")
    Set pvt = ws.PivotTables(1)
    With pvt.PivotFields("Project WBS").PivotItems("A").LabelRange
        Set rng = ws.Range(.Resize(.Rows.Count, pvt.TableRange1.Columns.Count).Address)
        Debug.Print rng.Address
    End With
End Sub
...