-2

У меня есть рабочая тетрадь с 30 и более листами. В частности, каждый лист может представлять собой счет-фактуру, порядок изменения и т.д., Так что формат каждого листа отличается от формата следующего.

Именованный диапазон Total на каждом листе может относиться к одной или нескольким случайным ячейкам на этом листе. На последнем листе я хочу, чтобы в одной ячейке отображалась сумма всех ячеек с именем Total.

Количество листов может варьироваться. Я не хочу использовать сводную таблицу.

Это возможно?

Приложение: Приведенная ниже формула возвращает общее количество всех ячеек, принадлежащих любому имени « Итого » на любом из перечисленных листов, но я хотел бы автоматизировать его, чтобы мне не пришлось вручную добавлять все имена листов. Название Total может относиться к одной ячейке или любой совокупности ячеек на каждом листе. При фактическом использовании именами листов могут быть любые случайные имена. Итак, я ищу код, который будет смотреть на каждом листе, и если лист содержит имя Total, то он добавляет +SUM(имя листа!(Итого) до уравнения. Функция SUM необходима для того, чтобы при наличии двух или более ячеек на листе в именованном диапазоне Total, они включались в GrandTotal. = SUM(Лист1!Итого)+SUM(Лист2!Итого)+SUM(Sheet3!Итого)+SUM(Лист4!Всего)

Другой пример: ниже показано, почему я думаю, что можно сделать то, что я хочу, за один шаг. Formulas = GET.CELL(48, INDIRECT("rc", 0)) создает динамический именованный диапазон "Формулы" в реальном времени, который включает каждую ячейку в книге, которая содержит формулу. Затем вы можете условно отформатировать все ячейки, чтобы иметь затененный фон, если ячейка содержит формулу.

Итак, я ищу функцию что-то вроде: GrandTotal = SUM(GET.CELL("Total", INDERECT("rc", 0)), где Total относится к любой ячейке, которая принадлежит диапазону с именем Total.

2 ответа2

0

Вы можете написать в сводном листе 2 столбца, для каждого счета-фактуры написать название листа.

Итого по счету
Лист1

Sheet2

Sheet7

если sheet1 находится в A2, во втором столбце:

=INDIRECT(A2&"!"&"total") вас будет значение итогового счета, после чего вы сможете добавить его к Grand Total

0

Старый вопрос, но, возможно, это поможет кому-то с той же проблемой. У меня была та же проблема и я написал для нее функцию:

Public Function SumNamedRanges(nm As String) As Double
    Dim sh As Worksheet
    Dim test As Range
    For Each sh In Sheets
        '  check if the named range exists
        On Error Resume Next
        Set test = sh.Range(nm)
        If Err.Number = 0 Then
            On Error GoTo 0
            '  sum the ranges
            SumNamedRanges = SumNamedRanges + _
            Application.WorksheetFunction.Sum(test)
        Else
            On Error GoTo 0
        End If
    Next
End Function

Функция не пересчитывает сама, хотя

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .