尝试在Excel中使用VBA执行某些VLookup等效功能。我有此示例表:
基本上,这就是我想要做的:
1)基于B12中的值,在表A1:A8中查找该值。 2)使用查找返回值设置单元格B13 3)如果未找到匹配项(例如B12 = 100000),则抛出错误消息。
我目前正在使用一堆“ IF .. ElseIf”语句,并且它变得太笨拙而无法维护。
谢谢。
答案 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