Добрый день! Есть статья - https://www.planetaexcel.ru/techniques/8/133/ в ней есть макрос. Подскажите как модернизировать макрос, чтобы он корректно собирал информации на листах, где порядок названий столбцов разный?
Например, если во вкладке "Лист1" Столбцы с данными "артикул" и "наименование", а во вкладке "Лист2" сначала "наименование", а потом "артикул", то макрос не корректно собирает данные.
В цитируемой Вами в #1 статье есть способ 2. Поскольку порядок столбцов в диапазонах разный, используйте вместо конструкции Select * явное перечисление столбцов в нужном Вам порядке: Select `артикул`,`наименование`
sokol92, заменил и макрос перестал исполняться. Если что я не силен в макросах.
Скрытый текст
Sub New_Multi_Table_Pivot() Dim i As Long Dim arSQL() As String Dim objPivotCache As PivotCache Dim objRS As Object Dim ResultSheetName As String Dim SheetsNames As Variant
'имя листа, куда будет выводиться результирующая сводная ResultSheetName = "Сводная" 'массив имен листов с исходными таблицами SheetsNames = Array("Лист1", "Лист2")
'формируем кэш по таблицам с листов из SheetsNames With ActiveWorkbook ReDim arSQL(1 To (UBound(SheetsNames) + 1)) For i = LBound(SheetsNames) To UBound(SheetsNames) arSQL(i + 1) = "Select `артикул`,`наименование` FROM [" & SheetsNames(i) & "$]" Next i Set objRS = CreateObject("ADODB.Recordset") objRS.Open Join$(arSQL, " UNION ALL "), _ Join$(Array("Provider=Microsoft.ACE.OLEDB.12.0; Data Source=", _ .FullName, ";Extended Properties=""Excel 8.0;"""), vbNullString) End With
'создаем заново лист для вывода результирующей сводной таблицы On Error Resume Next Application.DisplayAlerts = False Worksheets(ResultSheetName).Delete Set wsPivot = Worksheets.Add wsPivot.Name = ResultSheetName
'выводим на этот лист сводную по сформированному кэшу Set objPivotCache = ActiveWorkbook.PivotCaches.Add(xlExternal) Set objPivotCache.Recordset = objRS Set objRS = Nothing With wsPivot objPivotCache.CreatePivotTable TableDestination:=wsPivot.Range("A3") Set objPivotCache = Nothing Range("A3").Select End With