Вы можете настроить лист или несколько столбцов для перевода каждой буквы в "Пользовательское имя", а затем обращаться к ним таким образом.
Но я дам вам несколько примеров того, как это сделать, не имея имен ни в одной ячейке.
Пример 1
Просто зациклите все строки, и укажите каждую букву и ее название должно измениться.
Sub change()
Dim i As Integer, r As Integer, c As String
c = "E"
r = Cells(Rows.Count, c).End(xlUp).Row
For i = 1 To r
Select Case UCase(Cells(i, c).Value)
Case "A"
Cells(i, c).Value = "Custom1"
Case "B"
Cells(i, c).Value = "Custom2"
Case "C"
Cells(i, c).Value = "Custom3"
Case "D"
Cells(i, c).Value = "Custom4"
Case "E"
Cells(i, c).Value = "Custom5"
Case "F"
Cells(i, c).Value = "Custom6"
Case "G"
Cells(i, c).Value = "Custom7"
Case "H"
Cells(i, c).Value = "Custom8"
Case "I"
Cells(i, c).Value = "Custom9"
Case "J"
Cells(i, c).Value = "Custom10" 'And so on
End Select
Next i
End Sub
Для простоты доступа имя столбца (число работает также) задается переменной c
.
Это будет работать только на точных совпадениях и игнорировать все остальное.
Он не чувствителен к регистру (благодаря UCase), просто не забудьте указать букву в case
как Upper case, иначе она не будет работать.
Case "A" 'Will work
Case "a" 'Won't work
Это может превратиться в довольно длинный список, поэтому другой способ сделать это:
Пример 2
Sub changeArray()
Dim i As Integer, r As Integer, c As String
Dim Product
Product = Array("Custom1-A", "CustomB", "Custom3", "CustomD", , , , "Custom8", , , , , "Custom13", , , , , , , "Custom20", , , , , , "Custom25-Z")
c = "E"
r = Cells(Rows.Count, c).End(xlUp).Row
For i = 1 To r
Select Case UCase(Cells(i, c).Value)
Case "A" To "Z"
Cells(i, c).Value = Product(Asc(UCase(Mid(Cells(i, c).Value, 1, 1))) - 65)
End Select
Next i
End Sub
Основа этого кода такая же. Он все еще проходит по столбцу, указанному переменной c
. Но ведет себя совсем по-другому.
Этот код выбирает первую букву в столбце, и если это буква az, он изменит ячейку на произвольное имя, указанное в массиве.
Он не чувствителен к регистру и будет игнорировать все, кроме первой буквы. Таким образом, "A" и "Another1" будут рассматриваться одинаково.