Создание сводной таблицы по конкретному диапазону
danilsergei4
Дата: Вторник, 24.09.2013, 13:21 |
Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 8
Репутация:
0
±
Замечаний:
0% ±
Excel 2010
Добрый день. Вопрос по созданию сводной таблицы. Мне нужно понять, как при создании сводной задавать не, например, SourceData:= _"Лист!R1C1:R65536C3". Я хочу, чтобы во вновь созданной сводной таблице не было пустых значений. Какие вижу решения: 1) пропись в сорсдата диапазона с А-В, который позволит прописать последнюю непустую ячейку таблицы (ее я уже знаю). но не получается, получаю синтаксическую ошибку. 2) обращение в коде по имени таблицы. но тут у меня индекс имени постоянно увеличивается с исполнением макроса еще раз. в этом случае нужно понять, как задавать имя диапазона при создании нового листа и копировании данных туда. Пожалуйста, помогите мне по первому, второму или какому-то еще пути, которого я не знаю. Спасибо.
Добрый день. Вопрос по созданию сводной таблицы. Мне нужно понять, как при создании сводной задавать не, например, SourceData:= _"Лист!R1C1:R65536C3". Я хочу, чтобы во вновь созданной сводной таблице не было пустых значений. Какие вижу решения: 1) пропись в сорсдата диапазона с А-В, который позволит прописать последнюю непустую ячейку таблицы (ее я уже знаю). но не получается, получаю синтаксическую ошибку. 2) обращение в коде по имени таблицы. но тут у меня индекс имени постоянно увеличивается с исполнением макроса еще раз. в этом случае нужно понять, как задавать имя диапазона при создании нового листа и копировании данных туда. Пожалуйста, помогите мне по первому, второму или какому-то еще пути, которого я не знаю. Спасибо. danilsergei4
Ответить
Сообщение Добрый день. Вопрос по созданию сводной таблицы. Мне нужно понять, как при создании сводной задавать не, например, SourceData:= _"Лист!R1C1:R65536C3". Я хочу, чтобы во вновь созданной сводной таблице не было пустых значений. Какие вижу решения: 1) пропись в сорсдата диапазона с А-В, который позволит прописать последнюю непустую ячейку таблицы (ее я уже знаю). но не получается, получаю синтаксическую ошибку. 2) обращение в коде по имени таблицы. но тут у меня индекс имени постоянно увеличивается с исполнением макроса еще раз. в этом случае нужно понять, как задавать имя диапазона при создании нового листа и копировании данных туда. Пожалуйста, помогите мне по первому, второму или какому-то еще пути, которого я не знаю. Спасибо. Автор - danilsergei4 Дата добавления - 24.09.2013 в 13:21
_Boroda_
Дата: Вторник, 24.09.2013, 13:47 |
Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 16742
Репутация:
6534
±
Замечаний:
±
2003; 2007; 2010; 2013 RUS
3 варианта [vba]Код
Sub Макрос4() 'последняя непустая ячейка r_ = Range("A" & Rows.Count).End(xlUp).Row a0_ = ActiveSheet.Name & "!R1C1:R" & r_ & "C3" Sheets.Add a1_ = ActiveSheet.Name & "!R3C1" ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _ a0_, Version:=xlPivotTableVersion15).CreatePivotTable _ TableDestination:=a1_, TableName:="СводнаяТаблица1", _ DefaultVersion:=xlPivotTableVersion15 End Sub Sub Макрос5() 'Таблица Excel Sheets.Add a1_ = ActiveSheet.Name & "!R3C1" ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _ "Таблица1", Version:=xlPivotTableVersion15).CreatePivotTable _ TableDestination:=a1_, TableName:="СводнаяТаблица2", _ DefaultVersion:=xlPivotTableVersion15 End Sub Sub Макрос6() 'Именованный диапазон с именем "Имя" Sheets.Add a1_ = ActiveSheet.Name & "!R3C1" ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:="Имя" _ , Version:=xlPivotTableVersion15).CreatePivotTable TableDestination:= _ a1_, TableName:="СводнаяТаблица3", DefaultVersion:= _ xlPivotTableVersion15 End Sub
[/vba]
3 варианта [vba]Код
Sub Макрос4() 'последняя непустая ячейка r_ = Range("A" & Rows.Count).End(xlUp).Row a0_ = ActiveSheet.Name & "!R1C1:R" & r_ & "C3" Sheets.Add a1_ = ActiveSheet.Name & "!R3C1" ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _ a0_, Version:=xlPivotTableVersion15).CreatePivotTable _ TableDestination:=a1_, TableName:="СводнаяТаблица1", _ DefaultVersion:=xlPivotTableVersion15 End Sub Sub Макрос5() 'Таблица Excel Sheets.Add a1_ = ActiveSheet.Name & "!R3C1" ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _ "Таблица1", Version:=xlPivotTableVersion15).CreatePivotTable _ TableDestination:=a1_, TableName:="СводнаяТаблица2", _ DefaultVersion:=xlPivotTableVersion15 End Sub Sub Макрос6() 'Именованный диапазон с именем "Имя" Sheets.Add a1_ = ActiveSheet.Name & "!R3C1" ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:="Имя" _ , Version:=xlPivotTableVersion15).CreatePivotTable TableDestination:= _ a1_, TableName:="СводнаяТаблица3", DefaultVersion:= _ xlPivotTableVersion15 End Sub
[/vba] _Boroda_
Скажи мне, кудесник, любимец ба’гов... Платная помощь: Boroda_Excel@mail.ru Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
Ответить
Сообщение 3 варианта [vba]Код
Sub Макрос4() 'последняя непустая ячейка r_ = Range("A" & Rows.Count).End(xlUp).Row a0_ = ActiveSheet.Name & "!R1C1:R" & r_ & "C3" Sheets.Add a1_ = ActiveSheet.Name & "!R3C1" ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _ a0_, Version:=xlPivotTableVersion15).CreatePivotTable _ TableDestination:=a1_, TableName:="СводнаяТаблица1", _ DefaultVersion:=xlPivotTableVersion15 End Sub Sub Макрос5() 'Таблица Excel Sheets.Add a1_ = ActiveSheet.Name & "!R3C1" ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _ "Таблица1", Version:=xlPivotTableVersion15).CreatePivotTable _ TableDestination:=a1_, TableName:="СводнаяТаблица2", _ DefaultVersion:=xlPivotTableVersion15 End Sub Sub Макрос6() 'Именованный диапазон с именем "Имя" Sheets.Add a1_ = ActiveSheet.Name & "!R3C1" ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:="Имя" _ , Version:=xlPivotTableVersion15).CreatePivotTable TableDestination:= _ a1_, TableName:="СводнаяТаблица3", DefaultVersion:= _ xlPivotTableVersion15 End Sub
[/vba] Автор - _Boroda_ Дата добавления - 24.09.2013 в 13:47
SkyPro
Дата: Вторник, 24.09.2013, 13:49 |
Сообщение № 3
Группа: Друзья
Ранг: Старожил
Сообщений: 1206
Репутация:
255
±
Замечаний:
0% ±
2010
Я вот так делаю. Может и корявенько, но у меня работает. [vba]Код
Sub pvtMacro() Dim pvtRange$ pvtRange = "[" & ActiveWorkbook.Name & "]" & Sheets(1).Name & "!" & Sheets(1).Cells(1, 1) _ .Resize(Sheets(1).UsedRange.Rows.Count, _ Sheets(1).UsedRange.Columns.Count).Address(1, 1, 0, 0) Sheets.Add.Name = "pvt" ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _ pvtRange, Version:=xlPivotTableVersion14).CreatePivotTable _ TableDestination:="pvt!R1C1", TableName:="pivot1", _ DefaultVersion:=xlPivotTableVersion14 End Sub
[/vba]
Я вот так делаю. Может и корявенько, но у меня работает. [vba]Код
Sub pvtMacro() Dim pvtRange$ pvtRange = "[" & ActiveWorkbook.Name & "]" & Sheets(1).Name & "!" & Sheets(1).Cells(1, 1) _ .Resize(Sheets(1).UsedRange.Rows.Count, _ Sheets(1).UsedRange.Columns.Count).Address(1, 1, 0, 0) Sheets.Add.Name = "pvt" ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _ pvtRange, Version:=xlPivotTableVersion14).CreatePivotTable _ TableDestination:="pvt!R1C1", TableName:="pivot1", _ DefaultVersion:=xlPivotTableVersion14 End Sub
[/vba] SkyPro
skypro1111@gmail.com
Сообщение отредактировал SkyPro - Вторник, 24.09.2013, 13:53
Ответить
Сообщение Я вот так делаю. Может и корявенько, но у меня работает. [vba]Код
Sub pvtMacro() Dim pvtRange$ pvtRange = "[" & ActiveWorkbook.Name & "]" & Sheets(1).Name & "!" & Sheets(1).Cells(1, 1) _ .Resize(Sheets(1).UsedRange.Rows.Count, _ Sheets(1).UsedRange.Columns.Count).Address(1, 1, 0, 0) Sheets.Add.Name = "pvt" ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _ pvtRange, Version:=xlPivotTableVersion14).CreatePivotTable _ TableDestination:="pvt!R1C1", TableName:="pivot1", _ DefaultVersion:=xlPivotTableVersion14 End Sub
[/vba] Автор - SkyPro Дата добавления - 24.09.2013 в 13:49
danilsergei4
Дата: Вторник, 24.09.2013, 14:04 |
Сообщение № 4
Группа: Пользователи
Ранг: Прохожий
Сообщений: 8
Репутация:
0
±
Замечаний:
0% ±
Excel 2010
Друзья, спасибо, проблему решил минимальными усилиями подстановкой[vba]Код
SourceData:= _ Range("A1").CurrentRegion.Address
[/vba]Serge_007 - он писал Syntax error, я пытался написать что-то вроде[vba]Код
SourceData:= _"Лист!A1:D"& varName".
[/vba]где в varName был номер последней строки. если найденный способ где-то не будет работать, возьму ваши варианты, еще раз спасибо!
Друзья, спасибо, проблему решил минимальными усилиями подстановкой[vba]Код
SourceData:= _ Range("A1").CurrentRegion.Address
[/vba]Serge_007 - он писал Syntax error, я пытался написать что-то вроде[vba]Код
SourceData:= _"Лист!A1:D"& varName".
[/vba]где в varName был номер последней строки. если найденный способ где-то не будет работать, возьму ваши варианты, еще раз спасибо! danilsergei4
Ответить
Сообщение Друзья, спасибо, проблему решил минимальными усилиями подстановкой[vba]Код
SourceData:= _ Range("A1").CurrentRegion.Address
[/vba]Serge_007 - он писал Syntax error, я пытался написать что-то вроде[vba]Код
SourceData:= _"Лист!A1:D"& varName".
[/vba]где в varName был номер последней строки. если найденный способ где-то не будет работать, возьму ваши варианты, еще раз спасибо! Автор - danilsergei4 Дата добавления - 24.09.2013 в 14:04
SkyPro
Дата: Вторник, 24.09.2013, 14:15 |
Сообщение № 5
Группа: Друзья
Ранг: Старожил
Сообщений: 1206
Репутация:
255
±
Замечаний:
0% ±
2010
SourceData:= _"Лист!A1:D"& varName".
Тут лишие кавычки после переменной.
SourceData:= _"Лист!A1:D"& varName".
Тут лишие кавычки после переменной.SkyPro
skypro1111@gmail.com
Ответить
Сообщение SourceData:= _"Лист!A1:D"& varName".
Тут лишие кавычки после переменной.Автор - SkyPro Дата добавления - 24.09.2013 в 14:15