Нужен макрос в Excel сумма диапазона переменной длины

Я пытаюсь создать макрос, который способен распознавать, сколько строк имеют значения выше этого и только этого диапазона. Если вы посмотрите на прикрепленное изображение, мне нужно иметь возможность щелкнуть в ячейках B4, B10 и B21 и выполнить макрос и просуммировать только значения в этом диапазоне.

Итак, для ячейки B4 мне нужно, чтобы макрос знал, что он должен суммировать ячейки B1 до B3.

для ячейки B10 мне нужно, чтобы макрос автоматически знал, что ему нужно суммировать диапазон 4 ячеек (из B6 к B9).

для ячейки B21 мне нужен макрос, чтобы автоматически определить, что диапазон для суммирования теперь составляет 9 строк (от B12 до B20).

Macro use case screen shot

макросы я использовал либо только сумму заданного диапазона ячеек (например, только сумма на 5 клеток выше ячейки, в которой выполняется макрос (см. ниже код СНиП):

Sub Macro22()
'
' Macro22 Macro
' With Relative References turned on.
'
' Keyboard Shortcut: Ctrl+o
'
ActiveCell.FormulaR1C1 = "=SUM(R[-5]C:R[-1]C)"
End Sub

моя вторая попытка заставит макрос суммировать все ячейки над ним.

Sub test()
ActiveCell.Value = "=SUM(" & Range(Cells(1, ActiveCell.Column), Cells(ActiveCell.Row - 1, ActiveCell.Column)).Address(False, False) & ")"
End Sub

это даже возможно? Из того, что я видел, это должно быть возможно, но очень сложно заставить макрос это сделать.

16
задан Raystafarian
12.05.2023 5:57 Количество просмотров материала 2736
Распечатать страницу

2 ответа

и если вы действительно хотите макрос, использовать это (взято в основном из здесь, С некоторыми улучшениями):

Option Explicit

Sub AutoSum()
    Const SourceRange = "C:F"
    Dim NumRange As Range, formulaCell As Range
    Dim SumAddr As String
    Dim c As Long

    For Each NumRange In Columns(SourceRange).SpecialCells(xlConstants, xlNumbers).Areas
        SumAddr = NumRange.Address(False, False)
        Set formulaCell = NumRange.Offset(NumRange.Count, 0).Resize(1, 1)
        formulaCell.Formula = "=SUM(" & SumAddr & ")"

        'change formatting to your liking:
        formulaCell.Font.Bold = True
        formulaCell.Font.Color = RGB(255, 0, 0)

        c = NumRange.Count
    Next NumRange

End Sub

это работает на цифры в Столбцах C до F, измените его на любой другой диапазон, который вы хотите в начале кода (константа SourceRange).

просто убедитесь, что ваши цифры не соприкасались друг с другом.

1
отвечен pgr 2023-05-13 13:45

вместо макроса мне кажется, что вы спрашиваете уже часть Excel в качестве функции, называется AutoSum.

просто поместите курсор под непрерывный набор чисел (область, в Excel-speak) и нажмите кнопку AutoSum. Excel придумает для вас формулу.

кнопка AutoSum находится на ленте, на вкладке "Главная", далеко справа, и имеет значок, как Сигма ().

здесь a учебник.

0
отвечен pgr 2023-05-13 16:02

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя

Похожие вопросы про тегам:

macros
microsoft-excel
microsoft-excel-2007
microsoft-excel-2010
Вверх