Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Создание сводной таблицы по конкретному диапазону - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Создание сводной таблицы по конкретному диапазону (Макросы Sub)
Создание сводной таблицы по конкретному диапазону
danilsergei4 Дата: Вторник, 24.09.2013, 13:21 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 8
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Добрый день.

Вопрос по созданию сводной таблицы.

Мне нужно понять, как при создании сводной задавать не, например, SourceData:= _"Лист!R1C1:R65536C3".
Я хочу, чтобы во вновь созданной сводной таблице не было пустых значений. Какие вижу решения:
1) пропись в сорсдата диапазона с А-В, который позволит прописать последнюю непустую ячейку таблицы (ее я уже знаю). но не получается, получаю синтаксическую ошибку.
2) обращение в коде по имени таблицы. но тут у меня индекс имени постоянно увеличивается с исполнением макроса еще раз. в этом случае нужно понять, как задавать имя диапазона при создании нового листа и копировании данных туда.

Пожалуйста, помогите мне по первому, второму или какому-то еще пути, которого я не знаю. Спасибо.
 
Ответить
СообщениеДобрый день.

Вопрос по созданию сводной таблицы.

Мне нужно понять, как при создании сводной задавать не, например, SourceData:= _"Лист!R1C1:R65536C3".
Я хочу, чтобы во вновь созданной сводной таблице не было пустых значений. Какие вижу решения:
1) пропись в сорсдата диапазона с А-В, который позволит прописать последнюю непустую ячейку таблицы (ее я уже знаю). но не получается, получаю синтаксическую ошибку.
2) обращение в коде по имени таблицы. но тут у меня индекс имени постоянно увеличивается с исполнением макроса еще раз. в этом случае нужно понять, как задавать имя диапазона при создании нового листа и копировании данных туда.

Пожалуйста, помогите мне по первому, второму или какому-то еще пути, которого я не знаю. Спасибо.

Автор - danilsergei4
Дата добавления - 24.09.2013 в 13:21
_Boroda_ Дата: Вторник, 24.09.2013, 13:47 | Сообщение № 2
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16674
Репутация: 6479 ±
Замечаний: 0% ±

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]
К сообщению приложен файл: 12121245496.xlsm (28.8 Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
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]


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
Дата добавления - 24.09.2013 в 14:04
SkyPro Дата: Вторник, 24.09.2013, 14:15 | Сообщение № 5
Группа: Друзья
Ранг: Старожил
Сообщений: 1206
Репутация: 255 ±
Замечаний: 0% ±

2010
SourceData:= _"Лист!A1:D"& varName".

Тут лишие кавычки после переменной.


skypro1111@gmail.com
 
Ответить
Сообщение
SourceData:= _"Лист!A1:D"& varName".

Тут лишие кавычки после переменной.

Автор - SkyPro
Дата добавления - 24.09.2013 в 14:15
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Создание сводной таблицы по конкретному диапазону (Макросы Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!