Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Расчет суммы по двум столбцам - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Расчет суммы по двум столбцам (Макросы/Sub)
Расчет суммы по двум столбцам
SirKelt Дата: Пятница, 23.02.2018, 23:01 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Добрый вечер!

Прошу помочь с разбором макроса, а именно расчёт суммы по двум столбцам, а не по одному, как в данном примере:

[vba]
Код
Sub Яйцо()
Dim z, i&, j&, k&, m&, t$: z = Range("Поиск_яйцо!A1:G" & Range("Поиск_яйцо!A" & Rows.Count).End(xlUp).Row).Value
    With CreateObject("scripting.dictionary"): .CompareMode = 1
    For i = 1 To UBound(z): t = z(i, 1) & z(i, 2) & z(i, 3)
        If .exists(t) = False Then
            m = m + 1: .Item(t) = m: For j = 1 To UBound(z, 2): z(m, j) = z(i, j): Next
        Else
           z(.Item(t), 4) = z(.Item(t), 4) + z(i, 4)
        End If
    Next
Range("B5").Resize(.Count, UBound(z, 2)).Value = z
End With
    ActiveSheet.Range("$A$5:$F$850").AutoFilter Field:=5, Criteria1:="<>"
End Sub
[/vba]

Здесь рассчитывает сумму по столбцу D (4) на листе "Поиск_Яйцо", а необходимо, что бы также подбивал сумму по столбцу G (7) на том же листе.
Каким образом можно это сделать?

P.S. к сожалению, файлы по размеру не влезают...

С уважением, SirKelt


Сообщение отредактировал SirKelt - Суббота, 24.02.2018, 01:28
 
Ответить
СообщениеДобрый вечер!

Прошу помочь с разбором макроса, а именно расчёт суммы по двум столбцам, а не по одному, как в данном примере:

[vba]
Код
Sub Яйцо()
Dim z, i&, j&, k&, m&, t$: z = Range("Поиск_яйцо!A1:G" & Range("Поиск_яйцо!A" & Rows.Count).End(xlUp).Row).Value
    With CreateObject("scripting.dictionary"): .CompareMode = 1
    For i = 1 To UBound(z): t = z(i, 1) & z(i, 2) & z(i, 3)
        If .exists(t) = False Then
            m = m + 1: .Item(t) = m: For j = 1 To UBound(z, 2): z(m, j) = z(i, j): Next
        Else
           z(.Item(t), 4) = z(.Item(t), 4) + z(i, 4)
        End If
    Next
Range("B5").Resize(.Count, UBound(z, 2)).Value = z
End With
    ActiveSheet.Range("$A$5:$F$850").AutoFilter Field:=5, Criteria1:="<>"
End Sub
[/vba]

Здесь рассчитывает сумму по столбцу D (4) на листе "Поиск_Яйцо", а необходимо, что бы также подбивал сумму по столбцу G (7) на том же листе.
Каким образом можно это сделать?

P.S. к сожалению, файлы по размеру не влезают...

С уважением, SirKelt

Автор - SirKelt
Дата добавления - 23.02.2018 в 23:01
SirKelt Дата: Суббота, 24.02.2018, 02:52 | Сообщение № 2
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Ребят, спасибо!
Разобрался с вопросом :)

Если кому интересно, то таким образом:

[vba]
Код
Sub Яйцо()
Dim z, i&, j&, k&, m&, t$: z = Range("Поиск_яйцо!A1:G" & Range("Поиск_яйцо!A" & Rows.Count).End(xlUp).Row).Value
With CreateObject("scripting.dictionary"): .CompareMode = 1
For i = 1 To UBound(z): t = z(i, 1) & z(i, 2) & z(i, 3)
If .exists(t) = False Then
m = m + 1: .Item(t) = m: For j = 1 To UBound(z, 2): z(m, j) = z(i, j): Next
Else
z(.Item(t), 4) = z(.Item(t), 4) + z(i, 4) [b]: z(.Item(t), 7) = z(.Item(t), 7) + z(i, 7)[/b]
End If
Next
Range("B5").Resize(.Count, UBound(z, 2)).Value = z
End With
ActiveSheet.Range("$A$5:$F$850").AutoFilter Field:=5, Criteria1:="<>"
End Sub
[/vba]

Тему можно закрывать :)
 
Ответить
СообщениеРебят, спасибо!
Разобрался с вопросом :)

Если кому интересно, то таким образом:

[vba]
Код
Sub Яйцо()
Dim z, i&, j&, k&, m&, t$: z = Range("Поиск_яйцо!A1:G" & Range("Поиск_яйцо!A" & Rows.Count).End(xlUp).Row).Value
With CreateObject("scripting.dictionary"): .CompareMode = 1
For i = 1 To UBound(z): t = z(i, 1) & z(i, 2) & z(i, 3)
If .exists(t) = False Then
m = m + 1: .Item(t) = m: For j = 1 To UBound(z, 2): z(m, j) = z(i, j): Next
Else
z(.Item(t), 4) = z(.Item(t), 4) + z(i, 4) [b]: z(.Item(t), 7) = z(.Item(t), 7) + z(i, 7)[/b]
End If
Next
Range("B5").Resize(.Count, UBound(z, 2)).Value = z
End With
ActiveSheet.Range("$A$5:$F$850").AutoFilter Field:=5, Criteria1:="<>"
End Sub
[/vba]

Тему можно закрывать :)

Автор - SirKelt
Дата добавления - 24.02.2018 в 02:52
SirKelt Дата: Суббота, 24.02.2018, 06:38 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Столкнулся с другой проблемой: не считает десятичные числа, которые записаны после запятой.
Уже весь интернет перерыл, но конкретного решения не нашёл.
Помогите, пожалуйста (если не сложно, то на данном примере, т.к. мне пока трудно ориентироваться в vba).
 
Ответить
СообщениеСтолкнулся с другой проблемой: не считает десятичные числа, которые записаны после запятой.
Уже весь интернет перерыл, но конкретного решения не нашёл.
Помогите, пожалуйста (если не сложно, то на данном примере, т.к. мне пока трудно ориентироваться в vba).

Автор - SirKelt
Дата добавления - 24.02.2018 в 06:38
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Расчет суммы по двум столбцам (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!