EXCEL VBA:动态查找-两列,其中一列输入数据,另一列返回值
我想创建一个“查找”电子表格,其中有两列(比如,Prod_Format_a和Prod_Format_B)。这将是产品标识符的两个版本。我希望用户能够输入格式A或格式B,并有另一个返回 所以如果我输入一个格式a代码,我应该得到一个格式B代码。 如果我输入格式B代码,我应该返回格式a代码 最简单的方法是什么?显然,我将有一个单独的查找表来解决EXCEL VBA:动态查找-两列,其中一列输入数据,另一列返回值,vba,excel,Vba,Excel,我想创建一个“查找”电子表格,其中有两列(比如,Prod_Format_a和Prod_Format_B)。这将是产品标识符的两个版本。我希望用户能够输入格式A或格式B,并有另一个返回 所以如果我输入一个格式a代码,我应该得到一个格式B代码。 如果我输入格式B代码,我应该返回格式a代码 最简单的方法是什么?显然,我将有一个单独的查找表来解决 谢谢。我同意布兰登的观点。这可以通过巧妙地使用公式来解决。但是,我想建议索引匹配组合。因为,该表只包含2列,vlookup将只获取最左边的列作为查找 =IFE
谢谢。我同意布兰登的观点。这可以通过巧妙地使用公式来解决。但是,我想建议索引匹配组合。因为,该表只包含2列,vlookup将只获取最左边的列作为查找 =IFERROR(索引(产品格式,匹配(,产品格式,匹配),索引(产品格式,匹配(,产品格式,匹配,)) Match将根据表的位置返回一个数字 另一方面,索引将返回给定数字范围内的值
| A | B |
| ---------- | ------- |
| Ball | Sports |
| Pen | Writing |
| Cookie | Food |
| Pencil | Writing |
| Test | Object |
=匹配(“测试”,A1:A5,0)返回5 =指数(B1:B5,5)
返回“Object”在工作表(不是模块)的代码上尝试此操作
您需要有两个vlookup表E1:F20和F1:G20(列E和G相同,但我们需要G,因为vlookup查看的是数据的最左边的列)这可以通过巧妙使用excel公式轻松解决。类似于
=IfError(IfError(Vlookup(Value,Table1,Column,False),Vlookup(Value,Table1,Column,False)),“-”
这样的东西会检查Table1
项,如果没有找到它,它会检查Table2
,如果没有找到它,那么它会返回“-”(这只是为了替换\N/A
)。
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Target.Column = 1 Then
Range(Target.Address).Offset(0, 1).Value = Application.WorksheetFunction.VLookup(Range(Target.Address), Sheet1.Range("E1:F20"), 2, False)
Else
End If
If Target.Column = 2 Then
Range(Target.Address).Offset(0, -1).Value = Application.WorksheetFunction.VLookup(Range(Target.Address), Sheet1.Range("F1:G20"), 2, False)
Else
End If
End Sub