使用Excel返回基于3个变量的值

时间:2017-09-11 18:01:51

标签: excel vba

我有一个由多列组成的表,以及包含数据的行。我希望它根据乘法变量返回一个值。

标题是:        客户A,客户B,客户C,客户D,每个客户在两列中有两个选项,Opt1 Opt2,数据保存在下面的行(A3-A100)

我想写一个公式,它将根据3个选择的变量返回表中的值 - 例如行E,客户端B,选项2,返回相应单元格中的值

我尝试过使用INDEX Match,但它不起作用,想知道一个简单的VBA代码是否是更好的解决方案。

感谢您的期待。

1 个答案:

答案 0 :(得分:1)

如果您的参考数组已正确排序,则可以在公式中执行此操作。

否则VBA功能确实是你最好的选择:

Function Match3(LookupZone As Range, _
            Seek1 As Variant, Seek2 As Variant, Seek3 As Variant, _
            RefCol1 As Long, RefCol2 As Long, RefCol3 As Long, _
            ReturnCol As Long) _
        As Variant

Dim ARow As Long

Match3 = CVErr(xlErrNA)
If RefCol1 > LookupZone.Columns.Count Then Exit Function
If RefCol2 > LookupZone.Columns.Count Then Exit Function
If RefCol3 > LookupZone.Columns.Count Then Exit Function
If ReturnCol > LookupZone.Columns.Count Then Exit Function
'                
For ARow = 1 To LookupZone.Rows.Count
    If LookupZone(ARow, RefCol1).Value = Seek1 _
        And LookupZone(ARow, RefCol2).Value = Seek2 _
        And LookupZone(ARow, RefCol3).Value = Seek3 _
            Then
        Match3 = LookupZone(ARow, ReturnCol).Value
        Exit Function
    End If
Next ARow

End Function

然后,您可以根据需要在电子表格中使用此功能。