EXCEL VBA:动态查找-两列,其中一列输入数据,另一列返回值

EXCEL VBA:动态查找-两列,其中一列输入数据,另一列返回值,vba,excel,Vba,Excel,我想创建一个“查找”电子表格,其中有两列(比如,Prod_Format_a和Prod_Format_B)。这将是产品标识符的两个版本。我希望用户能够输入格式A或格式B,并有另一个返回 所以如果我输入一个格式a代码,我应该得到一个格式B代码。 如果我输入格式B代码,我应该返回格式a代码 最简单的方法是什么?显然,我将有一个单独的查找表来解决 谢谢。我同意布兰登的观点。这可以通过巧妙地使用公式来解决。但是,我想建议索引匹配组合。因为,该表只包含2列,vlookup将只获取最左边的列作为查找 =IFE

我想创建一个“查找”电子表格,其中有两列(比如,Prod_Format_a和Prod_Format_B)。这将是产品标识符的两个版本。我希望用户能够输入格式A或格式B,并有另一个返回

所以如果我输入一个格式a代码,我应该得到一个格式B代码。 如果我输入格式B代码,我应该返回格式a代码

最简单的方法是什么?显然,我将有一个单独的查找表来解决


谢谢。

我同意布兰登的观点。这可以通过巧妙地使用公式来解决。但是,我想建议索引匹配组合。因为,该表只包含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