Почему происходит ошибка "Type: mismatch" при компиляции функции в массив?
Всем привет!
Подскажите пожалуйста как "запустить" формулу массива для vba. Сейчас выдает ошибку 13:
Type: mismatch
Sub Match_Example1()
Dim TTBank As Long
Dim Value1 As Integer
Dim Value2 As Integer
Value1 = 456
Value2 = 753
TTBank = WorksheetFunction.Match(Value1 And Value2, Range(Cells(2, 1), Cells(10, 1)) And Range(Cells(2, 2), Cells(10, 2)), 0)
End Sub
Ответы (1 шт):
Автор решения: vikttur_Stop_RU_war_in_UA
→ Ссылка
Sub Match_Example1()
Dim arrayFromRange()
Dim TTBank As Long, Value1 As Long, Value2 As Long
arrayFromRange = Range("A2:B10").Value
Value1 = 456
Value2 = 753
TTBank = fFindTwoValues(arrayFromRange, Value1, Value2)
End Sub
Function fFindTwoValues(arr_(), val_1 As Long, val_2 As Long) As Long
Dim i As Long
For i = 1 To UBound(arr_)
If arr_(i, 1) = val_1 Then
If arr_(i, 2) = val_2 Then
fFindTwoValues = i: Exit Function
End If
End If
Next i
End Function
Вариант - функция пользователя (UDF)
Function FindVal(range_ As Range, val_1 As Long, val_2 As Long) As Long
Dim arr_()
Dim i As Long
arr_ = range_.Value
For i = 1 To UBound(arr_)
If arr_(i, 1) = val_1 Then
If arr_(i, 2) = val_2 Then
FindVal = i: Exit Function
End If
End If
Next i
End Function
В свободную ячейку листа (не в диапазоне, который передается в функцию!):
=FindVal(A2:B10;456;753)
В формуле можно менять диапазон, значения, вместо значений - ссылки на ячейки, где задаются значения... Если диапазон небольшой, можно значения не заносить в массив, а проверять сам диапазон.
