Есть ли способ отображения имени ячейки определенной ячейки в другой ячейке? Я хотел бы отобразить имя ячейки в соседней ячейке, чтобы пользователь мог идентифицировать имя ячейки, не щелкая ее.
Спасибо...
Есть ли способ отображения имени ячейки определенной ячейки в другой ячейке? Я хотел бы отобразить имя ячейки в соседней ячейке, чтобы пользователь мог идентифицировать имя ячейки, не щелкая ее.
Спасибо...
Эта функция даст имя 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
Он перебирает все имена в книге, а затем для каждого имени он проверяет, ссылается ли он на что-либо в этом параметре ввода листа. Если это тогда, то он проверяет, пересекаются ли входная ячейка и ярости, на которые ссылается имя. Если они это сделают, оно возвращает имя диапазона.
ADDRESS(ROW(),COLUMN())
предоставит вам адрес, например. $A $1 текущей ячейки. Добавьте/вычитайте из значений строки/столбца (числа) ссылку на ячейку, которую вы используете.
Если вы не хотите $, вы можете найти и заменить его SUBSTITUTE(ADDRESS(ROW(),COLUMN()),"$","")
и получить только A1, например
В 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
Я взял несколько советов из ответа выше от Адарша. Я получил аналогичный результат с приведенным ниже кодом, с этим циклом и несколькими уточнениями. Однако мои макросы "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
ActiveWorkbook.Sheets.Item(1).Cells(строка, col).Name.Name
Это не кажется возможным, что странно. Вы могли бы подумать, что функция cell()
должна предоставить способ получить имя, но это не так. Облом.
Это будет работать в самых основных обстоятельствах:
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() может работать.
Excel имеет функцию "Cell()", из которой вы можете получить определенные свойства.
Вы можете использовать = Cell ( "row", K9) и вернуть номер строки 9, и там есть эквивалентный параметр col, но он возвращает номер столбца (11), а не букву.
Ссылка на именованную ячейку в другой ячейке, E12 в этом случае, а затем используйте эту формулу: = "'" & FORMULATEXT (E12). Это ставит перед собой апостроф, чтобы он отображал имя или формулу в виде текста.
Вы можете поместить курсор в пустую ячейку, затем введите = и щелкните по названной ячейке. Он отобразит содержимое ячейки. Затем вы меняете формат ячейки на текст, и она будет показывать =
Технически вы могли бы объединить функции SUBSTITUTE() и new FORMULATEXT(), чтобы сделать это, если вы не возражаете добавить скрытый столбец на вашем листе.
Предположим, что ячейка A1 называется FOO Добавьте простую ссылочную формулу в B1 к названной ячейке = FOO Добавьте формулу в C1 = SUBSTITUTE (FORMULATEXT (B2), "=", "") Скрыть столбец B
Ячейка C1 будет содержать значение FOO (или ссылку RC для неназванных ячеек)
При необходимости отрегулируйте свой пробег (или километр).