Динамический именованный диапазон для другого листа - PullRequest
0 голосов
/ 05 октября 2018

У меня есть динамический именованный диапазон:

= OFFSET ('Sheet1'! $ H $ 1, 0, 0, COUNTA ('Sheet1'! $ H $ 1: $ H $ 100) -COUNTIF('Лист1'! $ H $ 1,0))

Это работает только для Листа 1.

Как я могу изменить эту формулу, чтобы она работала на всех листах?(Существует около 20 различных листов, названных «2010», «2011» и т. Д.).

Редактировать:

  • Все листы структурированы одинаково
  • Этот динамический именованный диапазон будет использоваться для обновления диаграмм
  • Есть лиспособ использовать INDIRECT?

Ответы [ 2 ]

0 голосов
/ 05 октября 2018

Вам нужны именованные диапазоны с одинаковыми именами с областью листа, а не областью книги.

Я изменил ваше определение именованного диапазона следующим образом.

=Sheet1!$H$1:INDEX(Sheet1!$H:$H, MATCH(1E+99, Sheet1!$H:$H))

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

Sub createNames()
    Dim wsn As Long, f As String

    For wsn = 2010 To 2019
        On Error GoTo next_wsn
        With Worksheets(CStr(wsn))
            On Error Resume Next
            .Names("Hnumbers").Delete
            On Error GoTo 0
            f = Replace("=Sheet!R1C8:INDEX(Sheet!C8, MATCH(1E+99, Sheet!C8))", "Sheet", Format(wsn, "'0'"))
            .Names.Add Name:="Hnumbers", RefersToR1C1:=f
        End With
next_wsn:
    Next wsn
End Sub
0 голосов
/ 05 октября 2018

Если все ваши листы структурированы аналогично sheet1, вы можете просто изменить значение «Sheet1» в формуле на имя вашего листа.Например, для рабочего листа 2010 года это будет:

= OFFSET('2010'!$H$1, 0, 0, COUNTA('2010'!$H$1:$H$100)-COUNTIF('2010'!$H$1,0))

Еще лучше, вы можете просто удалить имя листа в формуле и скопировать его на все свои листы (не копируйте саму ячейку; скопируйте текст формулы и вставьте его в строку формулы после нажатия на ячейку):

= OFFSET($H$1, 0, 0, COUNTA($H$1:$H$100)-COUNTIF(!$H$1,0))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...