Function hitridjus(x As String, a As Variant, b As Variant) As Variant Dim aData As Variant, bData As Variant, i As Long Dim aRows As Long, bRows As Long, aColumns As Long, bColumns As Long Dim f As Boolean, j As Long If TypeName(a) = "Range" Then aData = a.Value ElseIf TypeName(a) = "Variant()" Then aData = a End If If TypeName(b) = "Range" Then bData = b.Value ElseIf TypeName(b) = "Variant()" Then bData = b End If If (TypeName(aData) <> "Variant()") Or (TypeName(bData) <> "Variant()") Then hitridjus = "введены не диапазоны": Exit Function End If aRows = UBound(aData, 1): aColumns = UBound(aData, 2): bRows = UBound(bData, 1): bColumns = UBound(bData, 2) If (aRows <> bRows) Or (aColumns <> bColumns) Then hitridjus = "диапазоны a, b не равны": Exit Function End If For i = 1 To aRows - 1 If aData(i, 1) = x Then j = i + 1: f = False Do Until f Or j > aRows If aData(j, 1) = "Итого;" Then f = True: hitridjus = bData(j, 1) Exit Function End If j = j + 1 Loop hitridjus = CVErr(xlErrNA) End If Next i End Function |