Excel VBA查找

时间:2018-09-12 20:56:24

标签: excel excel-vba excel-formula

尝试在Excel中使用VBA执行某些VLookup等效功能。我有此示例表:

enter image description here

基本上,这就是我想要做的:

1)基于B12中的值,在表A1:A8中查找该值。 2)使用查找返回值设置单元格B13 3)如果未找到匹配项(例如B12 = 100000),则抛出错误消息。

我目前正在使用一堆“ IF .. ElseIf”语句,并且它变得太笨拙而无法维护。

谢谢。

2 个答案:

答案 0 :(得分:0)

您只需在单元格B13中使用公式:

=IF(B10>A8,"Error",INDEX($A$2:$B$8, SUMPRODUCT(--(A2:A8<=B10)),2))

这是基于您给出的示例的包容性(即1-9属于1级)。

答案 1 :(得分:0)

在工作表的专用代码表中尝试执行此操作(右键单击工作表名称标签,查看代码。

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address(0, 0) = "B12" Then
        On Error GoTo meh
        Application.EnableEvents = False
        Dim m As Variant
        If IsNumeric(Target) Then
            If Target < 1 Or Target > Application.Max(Range("A2:A8")) Then
                Target.Offset(1, 0) = "out of range"
            Else
                m = Application.Match(Target, Range("A1:A8"))
                Target.Offset(1, 0) = Cells(m, "B").Value
            End If
        End If
    End If

meh:
    Application.EnableEvents = True

End Sub