powered by simpleCommunicator - 2.0.39     © 2025 Programmizd 02
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / EXCEL Копирование сводной таблицы
5 сообщений из 5, страница 1 из 1
EXCEL Копирование сводной таблицы
    #39488228
Фотография Yagrus2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello world!
Нужно копировать сводную таблицу с одного листа на другой

Переработав вариант предложенный МакроРекордером получил такой способ(первый):
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Sub version1()
    Dim WorkSht1 As Worksheet
    Dim WorkSht2 As Worksheet
    ' Лист (Источник) - со сводной таблицей
    Set WorkSht1 = ThisWorkbook.Worksheets("Производители")
    ' Лист (Назначение) - куда делаем вставку
    Set WorkSht2 = ThisWorkbook.Worksheets("Произв. Детализация")
    ' Очистка старой информации на Листе (Назначение)
    WorkSht2.Cells.Clear
    ' Копирование
    WorkSht1.PivotTables("PVT_Произв").PivotSelect "", xlDataAndLabel, True
    Selection.Copy
    WorkSht2.Paste
    Application.CutCopyMode = False
End Sub


Но здесь мне не нравится использование ВЫДЕЛЕНИЯ.

Далее пришла идея использовать CurrentRegion. Собственно способ(второй):
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
Sub version2()
    Dim WorkSht1 As Worksheet
    Dim WorkSht2 As Worksheet
    Dim Rows, Cols As Integer
    ' Лист (Источник) - со сводной таблицей
    Set WorkSht1 = ThisWorkbook.Worksheets("Производители")
    ' Лист (Назначение) - куда делаем вставку
    Set WorkSht2 = ThisWorkbook.Worksheets("Произв. Детализация")
    ' Очистка старой информации на Листе (Назначение)
    WorkSht2.Cells.Clear
    'Соединяю две области сводной таблицы
    WorkSht1.Cells(9, 1) = "Temp"
    ' Получаю область сводной таблицы как текущую
    Rows = WorkSht1.Cells(10, 1).CurrentRegion.Rows.Count
    Cols = WorkSht1.Cells(10, 1).CurrentRegion.Columns.Count
    ' Копирование рассчитанного диапазона ячеек
    WorkSht1.Range(WorkSht1.Cells(1, 1), WorkSht1.Cells(Rows, Cols)).Copy Destination:=WorkSht2.Range("A1")
    ' Очистка технической ячейки
    WorkSht1.Cells(9, 1).Clear
    WorkSht2.Cells(9, 1).Clear
End Sub


Но здесь, тоже попахивает кустарным методом.

Интересует более изящный вариант, возможно с использованием PivotCache.

Как правильно(красиво) копировать сводную таблицу с одного листа на другой?
...
Рейтинг: 0 / 0
EXCEL Копирование сводной таблицы
    #39488316
Фотография Yagrus2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот скрин, поясняющий для чего нужна "техническая ячейка"
...
Рейтинг: 0 / 0
EXCEL Копирование сводной таблицы
    #39488317
Фотография Yagrus2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
EXCEL Копирование сводной таблицы
    #39488447
iMrTidy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yagrus2,

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
Option Explicit

Sub CopyMyPivot()

Dim wb As Workbook
Dim sh As Worksheet
Dim pt As PivotTable
Dim rn As Range

Set wb = ThisWorkbook
Set sh = wb.Sheets(2)
Set pt = sh.PivotTables("PivotTable1")
Set rn = sh.Range("Q1")

pt.TableRange2.Copy rn

End Sub



Или в одну строку:

Код: vbnet
1.
ThisWorkbook.Sheets(2).PivotTables("PivotTable1").TableRange2.Copy ThisWorkbook.Sheets(2).Range("Q1")



Индекс/имя листа, а также куда копировать переделайте под Ваши нужды.
...
Рейтинг: 0 / 0
EXCEL Копирование сводной таблицы
    #39489308
Фотография Yagrus2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iMrTidy,
Огромное спасибо!
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / EXCEL Копирование сводной таблицы
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]