Форум по VBA, Excel и Word

VBA, Excel => VBA, макросы в Excel => Тема начата: Monk от 09 июня 2019, 10:30

Название: Excel VBA Макросы: Суммирование строк по условию.
Отправлено: Monk от 09 июня 2019, 10:30
Нужна помощь в создании кода.
Мне нужно задать 2 условия на столбик B, i<=6 и i>=22. И все значения, входящие в этот интервал, должны просуммироваться.
Данные на листе1, значение нужно вывести на лист2.

[вложение удалено администратором]
Название: Re: Excel VBA Макросы: Суммирование строк по условию.
Отправлено: Администратор от 09 июня 2019, 11:17
Макрос
Sub Макрос()

    Dim sh_src As Worksheet, sh_res As Worksheet
    Dim сумма As Double
    Dim lr As Long, lc As Long, i As Long
   
   
    '1. Присваиваем имена листам, с которым надо работать.
        ' Далее в коде будем обращаться к листам по этим именам.
        ' Может быть так будет удобнее писать и читать код.
    Set sh_src = Worksheets("Лист1")
    Set sh_res = Worksheets("Лист2")
   
    '2. Поиск последней строки и столбца на листе-источнике.
        ' End не ищет в скрытых строках и столбцах.
    ' Поиск последней строки на листе-источнике в столбце B.
    lr = sh_src.Cells(sh_src.Rows.Count, "B").End(xlUp).Row
    ' Поиск последнего столбца на листе-источнике в строке 2.
    lc = sh_src.Cells(2, sh_src.Columns.Count).End(xlToLeft).Column
   
    '3. Подсчёт суммы согласно заданию.
    For i = 3 To lr
        Select Case sh_src.Cells(i, "B").Value
            Case Is <= 6, Is >= 22
                сумма = сумма + WorksheetFunction.Sum(sh_src.Range(sh_src.Cells(i, "D"), sh_src.Cells(i, lc)))
        End Select
    Next i
   
    '4. Вставка суммы на лист-результат.
    sh_res.Range("C3").Value = сумма
   
    '5. Сообщение, чтобы юзер понял, что макрос завершил работу.
    MsgBox "Готово.", vbInformation

End Sub
[свернуть]
Название: Re: Excel VBA Макросы: Суммирование строк по условию.
Отправлено: Monk от 09 июня 2019, 12:26
Большое спасибо. Код работает.