Именованные диапазоны не являются решением здесь.Вы хотите ввести «E23» и вернуть «Celular».Это словарная работа.Если вы не хотите настраивать словарь, подойдет простой массив, например
Dim Dict(1,10) As Variant
Dict(0, 0) = "E23"
Dict(1, 0) = "Celular"
Dict(0, 1) = "C17"
Dict 1, 1) = [Whatever]
Если бы Dict
был словарем, вы могли бы назвать «Celular» по имени «E23».Если это массив, как описано выше, вы можете использовать Enum для определения его позиции в массиве под другим именем.
Редактировать 10 февраля 2019 ====================== Я настроил рабочую таблицу с именем "Dict"
.
Теперь вы можете запустить код, как показано ниже.Помните, однако, что вам нужно установить ссылку на MS Scripting Runtime.
Option Explicit
Enum Nda ' Dictionary array
NdaAddress
NdaCaption
NdaCapCell
NdaTip
End Enum
Sub CreateDict()
' https://excelmacromastery.com/vba-dictionary/
Dim Dict As Scripting.Dictionary
Dim Arr As Variant
Dim R As Long, C As Long
Dim DictVal() As String
Set Dict = New Scripting.Dictionary
Arr = Worksheets("Dict").Range("A2:E5").Value
For R = 1 To UBound(Arr)
ReDim DictVal(1 To UBound(Arr, 2) - 1)
For C = 2 To UBound(Arr, 2)
DictVal(C - 1) = Arr(R, C)
Next C
' Debug.Print Arr(R, 1), Join(DictVal, "|")
Dict.Add Arr(R, 1), Join(DictVal, "|")
Next R
Dim Key As Variant
For Each Key In Dict.Keys
Debug.Print Key,
DictVal = Split(Dict(Key), "|")
Debug.Print DictVal(NdaAddress), DictVal(NdaCaption), DictVal(NdaCapCell), DictVal(NdaTip)
Next Key
End Sub
Идея состоит в том, что ключ "Tel" даст вам адрес ячейки, адрес ячейки заголовка,Сам заголовок и контрольный совет.Добавить или уменьшить по желанию / требуется.Попробуйте использовать небольшую служебную функцию для извлечения нужной части.
Debug.Print DictItem(Dict("Name"), NdaCaption)
Private Function DictItem(DictKey As String, _
Itm As Nda) As String
DictItem = Split(DictKey, "|")(Itm)
End Function