Ну можно эти пары слово/число/число/... писать на служебный лист и считывать с него - тогда там легко в любой момент всё заменить.
Даже так - в начале макроса считали значения в массив, затем в процессе сверяетесь с массивом.
Код |
---|
Например в начале кода
Dim a()
a = Sheets("служебный").[a1].CurrentRegion.Value
ну и в цикле тогда
For y = 2 To lLastRow
Select Case Cells(y, 7)
Case a(1, 1)
If Cells(y, 9) = 1 Then Cells(y, 9) = a(1, 2)
If Cells(y, 10) = 1 Then Cells(y, 10) = a(1, 3)
If Cells(y, 11) = 1 Then Cells(y, 11) = a(1, 4)
If Cells(y, 12) = 1 Then Cells(y, 12) = a(1, 5)
If Cells(y, 13) = 1 Then Cells(y, 13) = a(1, 6)
и т.д. |
А на листе "служебный" с A1 список
ОМ 50 50 50 50 50
ОК 110 210 80 100 100
ОБ 210 310 160 160 160
ОКБД 170 210 90 120 110
Ну а если список этих ОКБ большой - то тогда в начале значения с служебного листа в словарь, каждому наименованию массив его чисел, далее в цикле идём в словарь и берём нужный массив по ключу (если ключ есть в словаре).
Или даже так - ключ можно делать составной, например для пары "ОКБД|9|1" значение 170, а для "ОКБД|10|1" значение 210, тогда для каждой ячейки ряда будет в словаре своё значение, так даже проще, не нужно возиться с массивом этих чисел.
Сразу составили для ячейки строки ключ - взяли значение из словаря, если там есть такой ключ.
Изучайте словари
