2015-01-25 2 views
4

У меня есть ячейка в Excel, для которой я назначил имя переменной, this_cells_name, в ячейку D2, используя поле имени Excel.Как получить имя «Ячейка имени» ячейки Excel?

Вот пример того, что Excel Name Box является:

The Excel Name Box

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

Я знаю, как сделать следующее:

  • использование =CELL("address",D2) и получить "$D$2" в качестве возвращаемого значения,
  • использование =CELL("address",this_cells_name) и получить "$D$2" в качестве возвращаемого значения.

Я хочу сделать следующее:

  • использования =some_function(D2) и получить "this_cells_name" в качестве возвращаемого значения.

Как это сделать? Решение VBA будет прекрасным.

+0

Что такое «коробка имени»? –

+0

@roryap Я отредактировал свой вопрос, чтобы ответить вам. –

+1

Возможный дубликат [Как вы получаете диапазон, чтобы вернуть его имя?] (Http://stackoverflow.com/questions/3630496/how-do-you-get-a-range-to-return-its-name) –

ответ

3

Вы также можете использовать

Dim var as variant 
on error Resume Next 
var=Range("D2").Name.Name 
on error goto 0 
if IsEmpty(var) then msgbox "Cell has no name" 

Захват ошибки обрабатывать случай, когда клетка не имеет имени

+0

Будет ли это работать в офисе 2007? –

+0

Я не думаю, что это последнее: с моего жесткого диска я могу вернуться только в Excel 2003, но у него есть Range.Name (IIRC он возвращается, по крайней мере, к Excel97). Хитрость заключается в использовании Name.Name, поскольку свойство по умолчанию объекта Name является его ссылкой на формулу. –

+0

Да, он будет работать в Excel 2007 –

2

Рассмотрим:

Public Function WhatsInAName(r As Range) As String 
    WhatsInAName = "" 
    For Each n In ThisWorkbook.Names 
     If Range(n).Address(0, 0) = r.Address(0, 0) Then 
      WhatsInAName = n.Name 
     End If 
    Next n 
End Function 

Например:

enter image description here

+0

Ты мой герой! –

+0

@SimonStreicher благодарит за отзыв! –

+0

Что вы думаете об использовании 'r.Name.Name'? На самом деле, я вижу это как принятый ответ здесь: http://stackoverflow.com/a/3630587/293078 –

Смежные вопросы