Как предложил Матье, вы должны использовать справочную таблицу, а не длинную инструкцию if, если это вообще возможно.
Вероятно, не всегда так просто if this then that
, однако вы должны быть в состоянии исключить большинство из этих операторов if с помощью таблицы поиска и иметь некоторые операторы if только для того, что действительно имеет значение.
Сказав это, используя ваш пример и добавив таблицу поиска (в моем примере я назвал это lookupTable
), это должно дать вам отправную точку:
Option Explicit
Sub lookupValues()
Dim arrData As Variant: arrData = Range("RawData") 'declare and allocate your table to an array
Dim arrLookup As Variant: arrLookup = Range("lookupTable") 'declare and allocate your lookup table to an array
Dim R As Long, X As Long
For R = LBound(arrData) To UBound(arrData) 'for each row in your data
For X = LBound(arrLookup) To UBound(arrLookup) 'for each row in the lookup table
If arrData(R, 1) = arrLookup(X, 1) Then 'if there is a match
arrData(R, 2) = arrLookup(X, 2) 'allocate the value to the array
Exit For 'value found, check next
End If
Next X
Next R
Range("RawData") = arrData 'put the values back into the table
End Sub