найти следующую пустую ячейку и автосумму

#excel #vba

#excel #vba

Вопрос:

У меня есть данные за тот же месяц в нескольких столбцах в непрерывном диапазоне.

Каждый диапазон месяцев разделяется пустым столбцом.

Мне нужен макрос, который находит следующую пустую ячейку в начальной ячейке столбца B10 и автоматически суммирует столбцы, предшествующие пустой ячейке.

Я хочу, чтобы автосумма в выделенных столбцах выделялась желтым цветом (должен быть цикл).

пример изображения

Я начал писать код, но застрял:

 Sub sum()

    ActiveSheet.Range("b10").Select

    Selection.Columns.End(xlToRight).Offset(0, 1).Select

    ActiveCell.Value = "=Sum(columns.end (xltoleft)"

End Sub
  

Большое спасибо
София

Ответ №1:

Переменные

  • x: отслеживает текущую строку
  • y: первый столбец в диапазоне, подлежащий суммированию
  • y1: последний столбец в диапазоне, подлежащий суммированию

введите описание изображения здесь

 Sub AddColumnSums()

    Dim x As Long, y As Long, y1 As Long
    For x = 10 To Range("A" amp; Rows.Count).End(xlUp).Row
        If Cells(x, 1).Value <> "" Then
            y = 2 ' Initialize the start column
            Do
                ' xlToRight brings you to the last cell in a continous cell block
                y1 = Cells(x, y).End(xlToRight).Column

                ' The formula is assigned the first cell after continous cell block

                Cells(x, y1   1).Formula = "=Sum(" amp; Range(Cells(x, y), Cells(x, y1)).Address amp; ")"

                'The starting column is set to the first cell after the formula
                y = y1   2

            ' If there is no more data to the right of the starting column
            ' xlToRight will reference the last cell in the row and 
            ' the column loop will eixt

            Loop Until Cells(x, y).End(xlToRight).Column = Columns.Count
        End If
        'Increments to the next row
    Next
End Sub
  

Комментарии:

1. Супер!! Спасибо. Я новичок в VBA, поэтому не могли бы вы объяснить немного больше, чтобы я мог настроить это, если потребуется

2. Большое спасибо, Томас. Еще пара настроек. Как я могу изменить формулу на sumif, чтобы она суммировалась на основе заголовка столбца «Январь», «Февраль»…….. Есть ли способ объявить их заранее, а формула подбирает их и суммирует их по отдельности. Также могу ли я поместить заголовок столбца в итоговый столбец за каждый месяц с указанием «Общий итог за январь», «Общий итог за февраль»

3. Извините, что я пропустил ваш комментарий от 1 октября. Вы хотите создать сводную таблицу с фруктами в столбце A и ежемесячными метками, проходящими через столбцы от B до M? В любом случае вам следует опубликовать новый вопрос со скриншотом вашей настройки с тем, что вы пробовали, и, возможно, скриншотом желаемого результата. Завтра у меня выходной, поэтому я уверен, что увижу это. Но если вы свяжете меня с новым вопросом, я отвечу.