Есть ли способ отображения имени ячейки определенной ячейки в другой ячейке? Я хотел бы отобразить имя ячейки в соседней ячейке, чтобы пользователь мог идентифицировать имя ячейки, не нажимая ее.Извлечение имени ячейки в Excel
Благодаря ...
Есть ли способ отображения имени ячейки определенной ячейки в другой ячейке? Я хотел бы отобразить имя ячейки в соседней ячейке, чтобы пользователь мог идентифицировать имя ячейки, не нажимая ее.Извлечение имени ячейки в Excel
Благодаря ...
Это не представляется возможным, что это странно. Вы можете подумать, что функция 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), а не букву.
Эта функция даст имя 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
Он перебирает все имена в книге, а затем для каждого имени он проверяет, если он относится к любым вещам в этом входной параметр листа от. Если это тогда, то он проверяет, пересекаются ли входная ячейка и ярости, на которые ссылается имя. Если они это сделают, это возвращает название диапазона.
Поскольку я использую вашу функцию и ссылаюсь на [мой вопрос] (http://stackoverflow.com/questions/16604855/why-does-not-field-with-custom-function-to-get-name-recallculate), это может быть полезно добавить 'Application.Volatile' сразу после объявления функции. – Voitcus
Я вообще не знал об этой настройке .. Учусь за день! – Adarsha
ADDRESS(ROW(),COLUMN())
предоставит вам адрес, например. $ A $ 1 текущей ячейки. Добавьте/вычитайте из значений строки/столбца (числа) ссылку на ячейку, которую вы используете.
Если вы не хотите $, то вы можете найти и заменить его SUBSTITUTE(ADDRESS(ROW(),COLUMN()),"$","")
и получить только A1, например
Удивительно, что то, что я искал +1 – gsharp
Я взял некоторые «советы» от ответа выше от АДАРША. Я получил аналогичный результат с приведенным ниже кодом, с этим циклом и несколькими уточнениями. Однако мои макросы «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
Я разочарован. Кажется, что это работает ТОЛЬКО, когда у ячейки есть - имя определено. Кажется, единственный надежный способ сделать это - отсканировать все имена и вернуть первое или последнее совпадение. – will
ActiveWorkbook.Sheets.Item (1) .Cells (строка, столбец) .Name.Name
Ссылки именованных ячейки в другой ячейке, E12 в этом случае, и затем используйте эту формулу: = "'" & FORMULATEXT (E12).Это ставит перед собой апостроф, чтобы он отображал имя или формулу в виде текста.
Вы можете поместить курсор в пустую ячейку, затем введите = и щелкните по названной ячейке. Он отобразит содержимое ячейки. Затем вы измените формат ячейки на текст, и она отобразит =
В 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
Технически, вы могли бы сочетать в себе ПОДСТАВИТЬ() и новый FORMULATEXT() выполняет это, если вы не возражаете добавить скрытый столбец на своем листе.
Предположим ячейку А1 назван FOO Добавить простую опорную формулу в B1 до названной ячейки = FOO Добавить формулу в С1 = ПОДСТАВИТЬ (FORMULATEXT (В2), «=», «») Скрыть Колонка B
Ячейка C1 будет содержать значение FOO (или ссылку RC для неназванных клеток)
Регулировка по мере необходимости, ваш пробег (или kilometerage) может изменяться.
Что, если имя ссылается на диапазон? Или формула (OFFSET, скажем), которая иногда включала ячейку, но иногда нет? Я думаю, что MS просто объявила проблему «слишком тяжелой» и занялась чем-то более простым. ;-) –
Хорошая точка ... Думаю, я ожидаю получить имя, которое «покрывает» ячейку, если ячейка находится в именованном диапазоне. Конечно, могут быть другие функции, которые помогут решить любые такие проблемы, я удивлен, что нет. – unwind
Я подозреваю, что это одна из тех областей, где 80% не знают об этой функции и о тех, кто это делает, только 20% помощи. Поэтому нет никакого давления на решение. Намного лучше перепроектировать интерфейс. –