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

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

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

3 ответа3

1

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

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

  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
0

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

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

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

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

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

0

Я не верю, что есть встроенная функция 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

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

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