Получить сумму столбца H на основе имени листа - PullRequest
0 голосов
/ 27 сентября 2019

Я пытаюсь получить сумму столбца H для каждого отдельного листа.Название листа указано в столбце A

enter image description here

enter image description here

Как у меня естьделал это, используя = SUM ('BSF10003'! H: H), перетаскивая эту формулу вниз и изменяя последние пару цифр вручную, но это длинный процесс, если есть более 100 столбцов.

Я новичок в VBA и надеюсь, что есть способ выполнить эту задачу быстрее

Еще раз спасибо!

Ответы [ 2 ]

2 голосов
/ 27 сентября 2019

Функция INDIRECT - это еще один способ.Пример ниже,

=SUM(INDIRECT("'"& A2 &"'!H:H"))

A2 = Имя листа

INDIRECT позволяет динамически создавать ссылки.

1 голос
/ 27 сентября 2019

Одним из способов может быть UDF

Вставьте это в модуль

Function SumSheets(ByVal SheetName As String) as Double
    SumSheets=Application.WorksheetFunction.Sum(Worksheets(SheetName).Range.Columns(8))
End Function

И используйте его как стандартную формулу ...

=SumSheets(A1)

Вернетсясумма столбца H на листе, названном в A1

. Или как вариант, вы можете использовать это вместе с UDF.Вы вставили бы его в тот же модуль, что и UDF, но вам не нужно вводить формулу.Вместо этого вы выбираете ячейку в столбце и запускаете этот макрос.Формулы добавляются автоматически.

Sub FillRangeWithSumSheets()
    Dim n As Name: Dim s As String: s = "SumSheetsRange"
    With ActiveWorkbook
        For Each n In .Names
            If n.Name = s Then
                n.Delete
                Exit For
            End If`
        Next
        Set n = .Names.Add(s, "=OFFSET($A1,0," & ActiveCell.Column - 1 & ",COUNTA(Sheet1!$A:$A),1)")
        n.Visible = 1
        Range(s).Formula = "=SumSheets(A1)"
    End With
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...