Подтвердить что ты не робот

Получение имени ячейки в Excel

Есть ли способ отображения имени ячейки определенной ячейки в другой ячейке? Я хотел бы отобразить имя ячейки в соседней ячейке, чтобы пользователь мог идентифицировать имя ячейки, не щелкая ее.

Спасибо...

4b9b3361

Ответ 1

Эта функция даст имя NamedRange, к которому принадлежит ячейка:

Public Function CellName(oCell As Range) As Variant  
Dim oName As Name  
For Each oName In ThisWorkbook.Names  
    If oName.RefersToRange.Parent Is oCell.Parent Then  
        If Not Intersect(oCell, oName.RefersToRange) Is Nothing Then  
           CellName = oName.Name  
           Exit Function  
        End If  
    End If  
Next  
CellName = CVErr(xlErrNA)  
End Function  

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

Ответ 2

ADDRESS(ROW(),COLUMN()) предоставит вам адрес, например. $A $1 текущей ячейки. Добавьте/вычитайте из значений строки/столбца (числа) ссылку на ячейку, которую вы используете.

Если вы не хотите $, вы можете найти и заменить его SUBSTITUTE(ADDRESS(ROW(),COLUMN()),"$","") и получить только A1, например

Ответ 3

В Excel 2013 и, возможно, в некоторых более старых версиях, ADDRESS() принимает третий параметр, который определяет формат возвращаемого адреса со следующими значениями:

1 - Абсолютный (по умолчанию)

2 - Абсолютная строка/Относительный столбец

3 - Относительная строка/Абсолютный столбец

4 - Относительный

поэтому скажем в ячейке A1

ADDRESS(ROW();COLUMN()) //outputs $A$1
ADDRESS(ROW();COLUMN();1) //outputs $A$1
ADDRESS(ROW();COLUMN();2) //outputs A$1
ADDRESS(ROW();COLUMN();3) //outputs $A1
ADDRESS(ROW();COLUMN();4) //outputs A1

Если вы хотите отобразить имя ячейки D3 в ячейке A1, введите:

ADDERSS(ROW(D3);COLUMN(D3);4) //outputs text D3 in cell A1

Ответ 4

Я взял несколько советов из ответа выше от Адарша. Я получил аналогичный результат с приведенным ниже кодом, с этим циклом и несколькими уточнениями. Однако мои макросы "tip for excel" должны сделать ваш отладчик вашим лучшим другом.

'
Functionname_of(clls)
'
    name_of = ""
' 
    Dim  nam As String
    Dim  rg  As Range
    Set  rg = clls
'
    nam = rg.Name.Name
'
    name_of = nam
'
End Function 'name_of
'

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

Наслаждайтесь,... W

Ответ 5

ActiveWorkbook.Sheets.Item(1).Cells(строка, col).Name.Name

Ответ 6

Это не кажется возможным, что странно. Вы могли бы подумать, что функция cell() должна предоставить способ получить имя, но это не так. Облом.

Ответ 7

Это будет работать в самых основных обстоятельствах:

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

Он не будет работать, если ячейка является частью именованного диапазона, она не будет отображать несколько имен для ячейки, она не будет работать для ячеек, включенных в именованные формулы (например, диапазоны =OFFSET()),

"=" & cel.Parent.Name & "!" & cel.Address

вещь довольно неуклюжая. Может быть лучший способ сделать чек. Создание объекта Range из RefersTo и использование Intersect() может работать.

Ответ 8

Excel имеет функцию "Cell()", из которой вы можете получить определенные свойства.

Вы можете использовать = Cell ( "row", K9) и вернуть номер строки 9, и там есть эквивалентный параметр col, но он возвращает номер столбца (11), а не букву.

Ответ 9

Ссылка на именованную ячейку в другой ячейке, E12 в этом случае, а затем используйте эту формулу: = "'" & FORMULATEXT (E12). Это ставит перед собой апостроф, чтобы он отображал имя или формулу в виде текста.

Ответ 10

Вы можете поместить курсор в пустую ячейку, затем введите = и щелкните по названной ячейке. Он отобразит содержимое ячейки. Затем вы меняете формат ячейки на текст, и она будет показывать =

Ответ 11

Технически вы могли бы объединить функции SUBSTITUTE() и new FORMULATEXT(), чтобы сделать это, если вы не возражаете добавить скрытый столбец на вашем листе.

Предположим, что ячейка A1 называется FOO Добавьте простую ссылочную формулу в B1 к названной ячейке = FOO Добавьте формулу в C1 = SUBSTITUTE (FORMULATEXT (B2), "=", "") Скрыть столбец B

Ячейка C1 будет содержать значение FOO (или ссылку RC для неназванных ячеек)

При необходимости отрегулируйте свой пробег (или километр).