Формула для возврата имени таблицы, указав имя листа и адрес ячейки - PullRequest
0 голосов
/ 11 марта 2020

Кто-нибудь может мне помочь?

В файле Excel содержится 20 листов

На каждом листе есть несколько таблиц

На новом листе

Тип Название листа в ячейке A1 - например, NorthSales

Тип Адрес ячейки в ячейке A2, например, H484

Формула ячейки A3 должна возвращать имя таблицы в листе Northsales, в которой есть ячейка H484

THANK ВЫ !!

Ответы [ 2 ]

1 голос
/ 11 марта 2020

Я нашел свой ответ в другом сообщении: Имя таблицы возврата в Excel, используя формулу?

Я использовал вариант этого решения для своей задачи:

  • Я добавил формулу на каждом листе, которая указывала на заголовок в таблице
  • Затем я сослался на нее в моем новом Листе и извлек имя таблицы, используя FORMULATEXT, INDIRECT и MID function
      A                          B                                    C                      D
1 SheetName       Formula pointing to each sheet             Extract table Name          Value in cell X2 in each sheet
2 
3 Sheet1       =FORMULATEXT(INDIRECT("'" & A3 &"'!X2"))   =MID(B3,2,FIND("[",B3)-2)  =Status_2022[[#Headers],[Days Open]]
4 Sheet2       =FORMULATEXT(INDIRECT("'" & A4 &"'!X2"))   =MID(B4,2,FIND("[",B4)-2)  =Status_2021[[#Headers],[Days Open]]
5 Sheet3       =FORMULATEXT(INDIRECT("'" & A5 &"'!X2"))   =MID(B5,2,FIND("[",B5)-2)  =Status_2028[[#Headers],[Days Open]]
</div>
0 голосов
/ 11 марта 2020

Рассмотрим следующую определяемую пользователем функцию:

Public Function GetListObject(sh As String, addy As String) As String
    Dim rng As Range, rngLO As Range, LO As ListObject
    Dim msg As String
    Dim sht As Worksheet

    Set sht = Sheets(sh)
    Set rng = sht.Range(addy)

    If sht.ListObjects.Count = 0 Then
        GetListObject = "No ListObjects in sheet " & sh
        Exit Function
    End If

    msg = "cell " & addy & " not in a ListObject"
    For Each LO In sht.ListObjects
        Set rngLO = LO.Range
        If Not Intersect(rng, rngLO) Is Nothing Then
            msg = LO.Name
            Exit For
        End If
    Next LO

    GetListObject = msg
End Function

Если на указанном листе нет таблиц, это раскрывается.
Если ссылка на ячейку отсутствует в таблице, это раскрывается. В противном случае возвращается имя таблицы.

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...