Здравствуйте, Есть исходный файл в Excel. В нём есть лист «DATA», где расположены данные по остаткам товаров. Данные представляют собой таблицу с именованными столбцами. В таблице очень подробно выведены остатки товаров с детализацией до конкретного товара, цвета и даже размера. Необходимо написать макрос в Excel, который бы обработал эту исходную таблицу, и на её основе сделал соответствующее количество листов по каждой марке (один лист – одна марка). На листе «ARMANI test» пример отчёта по марке Armani. Пример сделан с помощью сводных таблиц Excel. Правильная моя логика из массива данных создать сводную таблицу со списком из которого создать листы и вытянуть данные по критерию (Название марки)
Сложность в создании первоначальной сводной (жалуется на PivotCaches) в чем я ошибся? Работаю на Маке и походу у него стандартная проблема с PivotCaches Кто еще в курсе этой проблемы? И что с этим делать и как мне можно решить поставленную задачу?
[vba]
Код
Sub CreateTableM() ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:="DATA!A1:Y4698").CreatePivotTable TableDestination:="", TableName:="ТаблицаМ" With ActiveSheet .Name = " SWOD " .PivotTableWizard TableDestination:=ActiveSheet.Cells(3, 1) End With With ActiveSheet.PivotTables("ТаблицаМ") .SmallGrid = True .PivotFields("_brand").Orientation = xlDataField
End With End Sub
[/vba]
Далее создаю листы
[vba]
Код
Sub Листы() Dim cell As Range For Each cell In ActiveSheet.Range("A4:A16") Worksheets.Add after:=Worksheets(ActiveSheet.Index) ActiveSheet.Name = CStr(cell.Value) Next End Sub
[/vba]
Как вытянуть данные по критерию еще не придумал
Подскажите как можно реализовать данную задачу?
[p.s.] Только начинаю познавать макросы и много еще не знаю (скорее всего не правильно прописываю команды)[/p.s.]
Здравствуйте, Есть исходный файл в Excel. В нём есть лист «DATA», где расположены данные по остаткам товаров. Данные представляют собой таблицу с именованными столбцами. В таблице очень подробно выведены остатки товаров с детализацией до конкретного товара, цвета и даже размера. Необходимо написать макрос в Excel, который бы обработал эту исходную таблицу, и на её основе сделал соответствующее количество листов по каждой марке (один лист – одна марка). На листе «ARMANI test» пример отчёта по марке Armani. Пример сделан с помощью сводных таблиц Excel. Правильная моя логика из массива данных создать сводную таблицу со списком из которого создать листы и вытянуть данные по критерию (Название марки)
Сложность в создании первоначальной сводной (жалуется на PivotCaches) в чем я ошибся? Работаю на Маке и походу у него стандартная проблема с PivotCaches Кто еще в курсе этой проблемы? И что с этим делать и как мне можно решить поставленную задачу?
[vba]
Код
Sub CreateTableM() ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:="DATA!A1:Y4698").CreatePivotTable TableDestination:="", TableName:="ТаблицаМ" With ActiveSheet .Name = " SWOD " .PivotTableWizard TableDestination:=ActiveSheet.Cells(3, 1) End With With ActiveSheet.PivotTables("ТаблицаМ") .SmallGrid = True .PivotFields("_brand").Orientation = xlDataField
End With End Sub
[/vba]
Далее создаю листы
[vba]
Код
Sub Листы() Dim cell As Range For Each cell In ActiveSheet.Range("A4:A16") Worksheets.Add after:=Worksheets(ActiveSheet.Index) ActiveSheet.Name = CStr(cell.Value) Next End Sub
[/vba]
Как вытянуть данные по критерию еще не придумал
Подскажите как можно реализовать данную задачу?
[p.s.] Только начинаю познавать макросы и много еще не знаю (скорее всего не правильно прописываю команды)[/p.s.]Restoris
Работаю на Маке и походу у него стандартная проблема с PivotCaches Кто еще в курсе этой проблемы? И что с этим делать и как мне можно решить поставленную задачу?
Работаю на Маке и походу у него стандартная проблема с PivotCaches Кто еще в курсе этой проблемы? И что с этим делать и как мне можно решить поставленную задачу?Restoris
Сложность в создании первоначальной сводной... Работаю на Маке
У меня на Мас'е так создаётся, версия Excel 15.41 [vba]
Код
Sub CreateTableM() Sheets.Add.Name = "SWOD" ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:="DATA!A1:Y4698", Version:=xlPivotTableVersion14).CreatePivotTable TableDestination:="SWOD!R3C1", TableName:="ТаблицаМ" With ActiveSheet.PivotTables("ТаблицаМ") .SmallGrid = True .PivotFields("_brand").Orientation = xlDataField End With End Sub
[/vba] Дальше добавляйте нужные поля в область строк [p.s.]Или Вас помощь только от SLAVICKа устроит?[/p.s.]
Сложность в создании первоначальной сводной... Работаю на Маке
У меня на Мас'е так создаётся, версия Excel 15.41 [vba]
Код
Sub CreateTableM() Sheets.Add.Name = "SWOD" ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:="DATA!A1:Y4698", Version:=xlPivotTableVersion14).CreatePivotTable TableDestination:="SWOD!R3C1", TableName:="ТаблицаМ" With ActiveSheet.PivotTables("ТаблицаМ") .SmallGrid = True .PivotFields("_brand").Orientation = xlDataField End With End Sub
[/vba] Дальше добавляйте нужные поля в область строк [p.s.]Или Вас помощь только от SLAVICKа устроит?[/p.s.]Pelena
"Черт возьми, Холмс! Но как??!!" Ю-money 41001765434816
Pelena, устроит от всех))) и буду очень благодарен)) со сводной разобрался, спасибо) но меня теперь больше интересует как на созданные листы перенести данные из сводной таблицы на подходящий лист, вот тут у меня реальный ступор(
Pelena, устроит от всех))) и буду очень благодарен)) со сводной разобрался, спасибо) но меня теперь больше интересует как на созданные листы перенести данные из сводной таблицы на подходящий лист, вот тут у меня реальный ступор(Restoris
Pelena, Я решил это так, потом попробую соединить в единый (файл слишком тяжеллый ) но все это далеко от того вида который я должен получить в итоге файл VBA 3 отправлял (Дата: Пятница, 19.01.2018, 06:43 | Сообщение № 2) [vba]
Код
Sub CreateTableM() ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:="DATA!A1:Y4698").CreatePivotTable TableDestination:="", TableName:="TableM" With ActiveSheet .Name = "Сводная" .PivotTableWizard TableDestination:=ActiveSheet.Cells(3, 1) End With With ActiveSheet.PivotTables("TableM") .SmallGrid = True .PivotFields("_stock_pcs").Orientation = xlDataField .PivotFields("_brand").Orientation = xlRowField End With End Sub
Sub Листы() Dim cell As Range For Each cell In ActiveSheet.Range("A5:A17") Worksheets.Add after:=Worksheets(ActiveSheet.Index) ActiveSheet.Name = CStr(cell.Value) Next End Sub
Sub Удаление() ' ' Удаление Макрос '
Application.DisplayAlerts = False Sheets("Сводная").Select ActiveWindow.SelectedSheets.Delete Application.DisplayAlerts = True End Sub
Sub CreateTableS() ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:="DATA!A1:Y4698").CreatePivotTable TableDestination:="", TableName:="TableS" With ActiveSheet .Name = "Сводная" .PivotTableWizard TableDestination:=ActiveSheet.Cells(3, 1) End With With ActiveSheet.PivotTables("TableS") .SmallGrid = True .PivotFields("_stock_pcs").Orientation = xlDataField .PivotFields("_brand").Orientation = xlRowField .PivotFields("_div").Orientation = xlRowField .PivotFields("_rus1").Orientation = xlRowField .PivotFields("_rus2").Orientation = xlRowField .PivotFields("_rus3").Orientation = xlRowField .PivotFields("_rus4").Orientation = xlRowField .PivotFields("_lastssn").Orientation = xlColumnField End With End Sub
[/vba]
Pelena, Я решил это так, потом попробую соединить в единый (файл слишком тяжеллый ) но все это далеко от того вида который я должен получить в итоге файл VBA 3 отправлял (Дата: Пятница, 19.01.2018, 06:43 | Сообщение № 2) [vba]
Код
Sub CreateTableM() ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:="DATA!A1:Y4698").CreatePivotTable TableDestination:="", TableName:="TableM" With ActiveSheet .Name = "Сводная" .PivotTableWizard TableDestination:=ActiveSheet.Cells(3, 1) End With With ActiveSheet.PivotTables("TableM") .SmallGrid = True .PivotFields("_stock_pcs").Orientation = xlDataField .PivotFields("_brand").Orientation = xlRowField End With End Sub
Sub Листы() Dim cell As Range For Each cell In ActiveSheet.Range("A5:A17") Worksheets.Add after:=Worksheets(ActiveSheet.Index) ActiveSheet.Name = CStr(cell.Value) Next End Sub
Sub Удаление() ' ' Удаление Макрос '
Application.DisplayAlerts = False Sheets("Сводная").Select ActiveWindow.SelectedSheets.Delete Application.DisplayAlerts = True End Sub
Sub CreateTableS() ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:="DATA!A1:Y4698").CreatePivotTable TableDestination:="", TableName:="TableS" With ActiveSheet .Name = "Сводная" .PivotTableWizard TableDestination:=ActiveSheet.Cells(3, 1) End With With ActiveSheet.PivotTables("TableS") .SmallGrid = True .PivotFields("_stock_pcs").Orientation = xlDataField .PivotFields("_brand").Orientation = xlRowField .PivotFields("_div").Orientation = xlRowField .PivotFields("_rus1").Orientation = xlRowField .PivotFields("_rus2").Orientation = xlRowField .PivotFields("_rus3").Orientation = xlRowField .PivotFields("_rus4").Orientation = xlRowField .PivotFields("_lastssn").Orientation = xlColumnField End With End Sub