Tropin
Full Member | Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору tccb Вот, можно так Код: Sub Svodka() Dim Day As String Dim n As Integer Dim Summ As Integer ' Для целых чисел иначе нужно указать другой тип Set WS1 = Worksheets("Лист1") Set WS2 = Worksheets("Лист2") ' цикл по исходным данным For Each R In WS1.UsedRange.Rows ' не считаем, если первая строка (заголовки) If R.Row > 1 Then ' запомним сумму текущей операции Summ = R.Cells(, 4) ' берем число текущей операции Day = R.Cells(, 1) ' ищем дату в сводной таблице Set c = WS2.UsedRange.Range("A:A").Find(Day, _ LookIn:=xlValues, LookAt:=xlWhole) ' если ее еще нет If c Is Nothing Then ' номер последней строки n = WS2.UsedRange.Rows.Count + 1 WS2.Cells(n, 1) = S If R.Cells(, 3) = "безнал" Then WS2.Cells(n, 2) = Summ ElseIf R.Cells(, 3) = "нал" Then WS2.Cells(n, 3) = Summ End If If R.Cells(, 5) = "посылка" Then WS2.Cells(n, 4) = Summ ElseIf R.Cells(, 5) = "пакет" Then WS2.Cells(n, 5) = Summ End If ' если дата найдена Else ' номер строки с найденной датой n = c.Row If R.Cells(, 3) = "безнал" Then WS2.Cells(n, 2) = WS2.Cells(n, 2) + Summ ElseIf R.Cells(, 3) = "нал" Then WS2.Cells(n, 3) = WS2.Cells(n, 3) + Summ End If If R.Cells(, 5) = "посылка" Then WS2.Cells(n, 4) = WS2.Cells(n, 4) + Summ ElseIf R.Cells(, 5) = "пакет" Then WS2.Cells(n, 5) = WS2.Cells(n, 5) + Summ End If End If End If Next R End Sub | Но работает только для заданного примера!!! и вообще, скоро за такое я буду брать деньги ;)
---------- Вот потому, что вы говорите то, что не думаете и думаете то, что не думаете, вот в клетках и сидите... (C) Кин-дза-дза |
|