Формула возвращает имя, определенное ячейкой

Формула возвращает имя, определенное ячейкой

Мне нужна формула, которая будет использовать адрес ячейки и возвращать определенное имя ячейки, т.е.

=INDIRECT(ADDRESS(ROW(),COLUMN(),1,,"SHEET 001"))

Мне нужно, чтобы это ADDRESS(ROW(),COLUMN()ссылалось на текущее определенное имя ячейки
, то есть «продажи», а не$A$1

решение1

Я придумал быстрый обходной путь, хотя, надо признать, немного ограниченный.

  1. Вставьте список всех определенных имен в свободную область листа.
  2. Следующая формула создаст строку, похожую на полный адрес ячейки, который вы ищете, сопоставит его в списке и вернет имя ячейки из соседнего столбца =INDEX(NameList,MATCH("='"&SUBSTITUTE(CELL("filename"),"fully_qualified_filename","")&"'!"&CELL("address"),NameReferences,0))

Очевидно, что он ограничен именами, указывающими на одну ячейку, но его можно расширить для поиска по диапазонам ячеек.

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

Работая над проектом, я включил в часто запускаемый макрос оператор, который обновляет список имен, чтобы поддерживать его в актуальном состоянии.

решение2

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

Это работает так:

  1. Вставьте приведенный ниже код в модуль VBA книги Excel с поддержкой макросов (*.xlsm).
  2. Затем введите в ячейку листа Excel что-то вроде «=CellName(F19)», и она вернет что-то вроде «rngSomeNamedCell».

Вот код:

Public Function CellName(cel As Range) As Variant
Dim nm As Name
    For Each nm In Names
        If nm.RefersTo = "=" & cel.Parent.Name & "!" & cel.Address Then
            CellName = nm.Name
            Exit Function
        End If
    Next
CellName = CVErr(xlErrNA)
End Function

решение3

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

Две функции ниже вернут имя ячейки. Одна принимает ссылку на ячейку, другая — строку и столбец. Обе настроены на работу только на локальном листе прямо сейчас, но вы можете добавить необязательную переменную для получения имени рабочего листа, если это необходимо.

Первая функция будет вызвана с помощью=cell_name()

Гордон

Function cell_name() As String
dim rng as Range
On Error Resume Next

set rng = activeCell

If Len(rng.Name.Name) < 0 Then
    cell_name = "No named Range"
    Exit Function
End If

cell_name = rng.Name.Name

if instr("cell_name","!")>0 then
    cell_name = Right(cell_name, Len(cell_name) - InStr(cell_name, "!"))
end if

End Function

вторая функция возвращает имя ячейки из указанной строки и столбца

Function cell_name2(r As Long, c As Long) As String
Dim rng As Range

Set rng = Cells(r, c)
On Error Resume Next

If Len(rng.Name.Name) < 0 Then
    cell_name = "No named Range"
    Exit Function
End If

cell_name2 = rng.Name.Name

End Function

Отредактирована первая функция для работы с активной ячейкой.

Связанный контент