Я хочу создать UDF для следующей формулы совпадения индекса Excel:
{=INDEX($A$1:$J$7,MATCH(B9,$A$1:$A$7,0),MATCH(1,($A$1:$J$1=B10)*($A$2:$J$2=B11),0))}
введите описание изображения здесь
AA AA AA BB BB BB CC CC CC
a b c a b c a b c
1 10 55 24 48 95 19 5 28 65
2 16 48 3 62 46 50 59 80 17
3 63 47 19 23 67 26 14 16 9
4 55 91 4 55 72 79 27 39 50
5 75 53 7 42 45 19 58 41 12
Condition1 3
Condition2 AA
Condition3 c
index-Match 19 =INDEX($A$1:$J$7,MATCH(B9,$A$1:$A$7,0),MATCH(1,($A$1:$J$1=B10)*($A$2:$J$2=B11),0))}
ПРИМЕЧАНИЕ: CTRL + SHIFT + ENTER
для возврата результата массива в excel
Это работает на листе Excel, но когда я пытаюсь преобразовать его в VBA, я получаю сообщение об ошибке.
Я полагаю, что мне нужно применить FormulaArray где-то в следующих кодах, любая помощь очень ценится.
Я пробовал использовать следующие коды, но получил #VALUE!
Public Function UDF_IndexMatch(Condition1, Condition2, COndition3)
UDF_IndexMatch = Application.WorksheetFunction.Index(Range("$A$1:$J$7"), _
Application.WorksheetFunction.Match(Condition1, Range("$A$1:$A$7"), 0), _
Application.WorksheetFunction.Match(1, (Range("$A$1:$J$1") = Condition2) * (Range("$A$2:$J$2") = COndition3), 0))
End Function
конечный результат должен выглядеть примерно так:
= UDF_IndexMatch(Condition1, Condition2, COndition3)
return: соответствующий индексный результат совпадения