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

Вход

Регистрация

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

 

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

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Создание сводной таблицы макросом
Leo Дата: Вторник, 25.01.2011, 16:44 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 3
Репутация: 0 ±
Замечаний: 0% ±

http://www.excelworld.ru/forum/3-87-1

[vba]
Код
Sub CreatePT()

Dim Pt As PivotTable
Dim strField As String

strField = Selection.Cells(1, 1).Text
Range(Selection, Selection.End(xlDown)).Name = "Items"

ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, _
SourceData:="=Items").CreatePivotTable TableDestination:="", _
TableName:="ItemList"

Set Pt = ActiveSheet.PivotTables("ItemList")
ActiveSheet.PivotTableWizard TableDestination:=Cells(3, 1)
Pt.AddFields RowFields:=strField
Pt.PivotFields(strField).Orientation = xlDataField
End Sub
[/vba]

Перед запуском необходимо выделить заголовок исходных данных.

Прекрасный код ;)
Но есть вопрос. Можно ли сделать, чтобы можно было выставить автоматически критерии по одному столбцу (поставить столбец в поле строк), например столбец A:A, а значения взять по другому столбцу(например, столбец B: B) ?


Леонид
 
Ответить
Сообщениеhttp://www.excelworld.ru/forum/3-87-1

[vba]
Код
Sub CreatePT()

Dim Pt As PivotTable
Dim strField As String

strField = Selection.Cells(1, 1).Text
Range(Selection, Selection.End(xlDown)).Name = "Items"

ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, _
SourceData:="=Items").CreatePivotTable TableDestination:="", _
TableName:="ItemList"

Set Pt = ActiveSheet.PivotTables("ItemList")
ActiveSheet.PivotTableWizard TableDestination:=Cells(3, 1)
Pt.AddFields RowFields:=strField
Pt.PivotFields(strField).Orientation = xlDataField
End Sub
[/vba]

Перед запуском необходимо выделить заголовок исходных данных.

Прекрасный код ;)
Но есть вопрос. Можно ли сделать, чтобы можно было выставить автоматически критерии по одному столбцу (поставить столбец в поле строк), например столбец A:A, а значения взять по другому столбцу(например, столбец B: B) ?

Автор - Leo
Дата добавления - 25.01.2011 в 16:44
_Boroda_ Дата: Вторник, 25.01.2011, 17:31 | Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 16714
Репутация: 6503 ±
Замечаний: ±

2003; 2007; 2010; 2013 RUS
Вроде так работает
[vba]
Код
Sub CreatePT()

Dim Pt As PivotTable
Dim strField As String

s_ = 1 'Номер того столбца в выделенном, который пойдет в строки
z_ = 3 'Номер того столбца в выделенном, который пойдет в значения

Str_ = Selection.Cells(1, s_).Value
Zn_ = Selection.Cells(1, z_).Value

strField = Selection.Cells(1, 1).Text
Range(Selection, Selection.End(xlDown)).Name = "Items"

ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, _
SourceData:="=Items").CreatePivotTable TableDestination:="", _
TableName:="ItemList"

Set Pt = ActiveSheet.PivotTables("ItemList")
ActiveSheet.PivotTableWizard TableDestination:=Cells(3, 1)
Pt.PivotFields(Str_).Orientation = xlRowField
Pt.AddDataField ActiveSheet.PivotTables( _
           "ItemList").PivotFields(Zn_), "Сумма по полю " & Zn_, xlSum
End Sub
[/vba]


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеВроде так работает
[vba]
Код
Sub CreatePT()

Dim Pt As PivotTable
Dim strField As String

s_ = 1 'Номер того столбца в выделенном, который пойдет в строки
z_ = 3 'Номер того столбца в выделенном, который пойдет в значения

Str_ = Selection.Cells(1, s_).Value
Zn_ = Selection.Cells(1, z_).Value

strField = Selection.Cells(1, 1).Text
Range(Selection, Selection.End(xlDown)).Name = "Items"

ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, _
SourceData:="=Items").CreatePivotTable TableDestination:="", _
TableName:="ItemList"

Set Pt = ActiveSheet.PivotTables("ItemList")
ActiveSheet.PivotTableWizard TableDestination:=Cells(3, 1)
Pt.PivotFields(Str_).Orientation = xlRowField
Pt.AddDataField ActiveSheet.PivotTables( _
           "ItemList").PivotFields(Zn_), "Сумма по полю " & Zn_, xlSum
End Sub
[/vba]

Автор - _Boroda_
Дата добавления - 25.01.2011 в 17:31
Leo Дата: Вторник, 25.01.2011, 17:52 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 3
Репутация: 0 ±
Замечаний: 0% ±

Спасибо ;)))))))))))))))))))))))))))


Леонид
 
Ответить
СообщениеСпасибо ;)))))))))))))))))))))))))))

Автор - Leo
Дата добавления - 25.01.2011 в 17:52
  • Страница 1 из 1
  • 1
Поиск:

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