Страницы: 1
RSS
Агрегирование таблицы с помощью VBA
 
Добрый день. Помогите пожалуйста, есть таблица. Нужно вывести агрегированную информацию по этой таблице на другую вкладку. Знаю, как решить это с помощью SQL, но мне кажется с этим легко можно справится и средствами VBA. Как это можно написать без использования SQL запроса?
Код
[/CODE][CODE]Sub Макрос1()
Dim CON As Object 'New ADODB.Connection
Dim RS As Object 'New ADODB.Recordset
Dim arrS
Set CON = CreateObject("ADODB.Connection")
Set RS = CreateObject("ADODB.Recordset")
CON.Provider = "Microsoft.ACE.OLEDB.12.0"
CON.ConnectionString = "Data Source=" & ThisWorkbook.Path & "\" & ActiveWorkbook.Name & "; Extended Properties=""Excel 12.0 Xml;HDR=YES"""
CON.Open
RS.Open "SELECT Артикул, SUM(Количество) FROM [База$] GROUP BY Артикул", CON
Worksheets("Результат").Range("A2").CopyFromRecordset RS
RS.Close
End Sub
 
Доброе время суток
Цитата
DopplerEffect написал:
Как это можно написать без использования SQL запроса?
Используя, например словарь описание объекта Dictionary
 
Андрей VG, спасибо, сейчас разберемся.

Андрей VG, правильно я понимаю, что вот так должно выглядеть? Или есть проще решение со словарями?
Код
Dim dicTemp
Set dicTemp = CreateObject("Scripting.Dictionary")
For i = 2 To 5
    If dicTemp.Exists(CStr(Cells(i, 1))) = False Then
        dicTemp.Add CStr(Cells(i, 1)), Cells(i, 2)
    Else
        dicTemp.Item(CStr(Cells(i, 1))) = dicTemp.Item(CStr(Cells(i, 1))) + Cells(i, 2)
    End If
Next i
Worksheets("Результат").Cells(2, 1).Resize(dicTemp.Count) = Application.Transpose(dicTemp.Keys)
Worksheets("Результат").Cells(2, 2).Resize(dicTemp.Count) = Application.Transpose(dicTemp.Items)

Изменено: DopplerEffect - 12.05.2020 16:09:43
Страницы: 1
Наверх