SERGE_BLIZNUK
Silver Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Не забудьте проставить Ваши строчки и столбы в секциях, где задаётся исходная и итоговая таблица! Код: Sub ScanAndSumComments() Dim pComments As New Scripting.Dictionary Dim i, iRow, RowFirst, rowLast, RowItogFirst As Long Dim vEntry As String Dim ColComment, ColQ, ColItogComment, ColItogQ As String ' ---------------- Исходная таблица ---------------- ColComment = "A" ' исходный столбец, в котором комментарии ColQ = "B" ' исходный столбец, в котором числа RowFirst = 6 ' строчка, где начинаются комментарии (первая строка исходной таблицы) rowLast = 13 ' строчка, где заканчиваются комментарии (последняя строка исходной таблицы) ' в принципе последнюю строчку легко определять автоматически - ' но в постановке задачи такого не было ' ---------------- итоговая таблица ---------------- ColItogComment = "F" ' итоговый столбец, куда результат - список комментариев ColItogQ = "G" ' итоговый столбец, куда результат - сумма RowItogFirst = 2 ' строчка, куда начинать писать итоги For iRow = RowFirst To rowLast vEntry = CStr(Cells(iRow, ColComment).Value) If Not pComments.Exists(vEntry) Then pComments.Add vEntry, Cells(iRow, ColQ).Value Else ' TempSum = pComments.Item(vEntry) pComments.Item(vEntry) = pComments.Item(vEntry) + CDbl(Cells(iRow, ColQ).Value) End If Next iRow For i = 0 To pComments.Count - 1 Cells(i + RowItogFirst, ColItogComment).Value = pComments.Keys(i) Cells(i + RowItogFirst, ColItogQ).Value = pComments.Items(i) Next i End Sub |
|