Продолжайте получать ~ N / A - PullRequest
1 голос
/ 22 апреля 2019

У меня есть простой массив из 2 столбцов, и все, что я хочу сделать, это использовать Vlookup, чтобы найти соответствующее значение в столбце 1 и вернуть значение из столбца 2. Я продолжаю получать # N / A, что подразумевает, что мой «ответ» не там Я думал, что все сделал правильно, но, похоже, не могу найти ответ, несмотря на чтение МНОГО # N / A вопросов. Это мой код: -

Dim y as Variant
Dim Misc_Pay(1 to 16,1 to 2 ) as Variant.
' Populate the Misc_Pay array
Misc_Pay(1,2) = "Cancer,3"
Misc_Pay(2,2) = "Clerical,Last of Month"
Misc_Pay(3,2) = "Halifax,14"
Misc_Pay(4,2) = "Reward,1"
'and so on down to 
Misc_Pay(16,2) = "Last Line,End of File"
'My Vlook up code is:-
y = (Application.Vlookup("Reward",Misc_Pay,2,False)

Я тогда печатал "y", чтобы я мог видеть, какое значение он получает, за исключением того, что он, кажется, ничего не получает, но, например, «Награда» явно там.

Если я смогу заставить эту строку работать, тогда полный код строки будет: -

If(iserror(Application.Vlookup("Reward,Misc_Bay,2,False) then 'do something' Else 'do something else'

1 Ответ

0 голосов
/ 22 апреля 2019

Для начала отправленный вами код не скомпилируется из-за периода в конце в строке 2 и дополнительного ( в последней строке.

Если вы пытаетесь выполнить поиск в двумерном массиве, вам необходимо установить значения как для ключевого столбца, так и для столбцов поиска (в данном случае столбцы 1 и 2 соответственно). В настоящее время вы просто назначаете всю строку с запятой второму столбцу, поэтому в первом столбце искать нечего.

Я думаю, что вы хотите это:

Dim y As Variant
Dim Misc_Pay(1 To 16, 1 To 2) As Variant

Misc_Pay(1, 1) = "Cancer"
Misc_Pay(1, 2) = "3"

Misc_Pay(2, 1) = "Clerical"
Misc_Pay(2, 2) = "Last of Month"

Misc_Pay(3, 1) = "Halifax"
Misc_Pay(3, 2) = "14"

Misc_Pay(4, 1) = "Reward"
Misc_Pay(4, 2) = "1"

Misc_Pay(16, 1) = "Last Line"
Misc_Pay(16, 2) = "End of File"

y = Application.VLookup("Reward", Misc_Pay, 2, False)
...