【问题标题】:VBA lookup with 2 dimensional table使用二维表进行 VBA 查找
【发布时间】:2015-02-09 20:37:44
【问题描述】:

我有一张大的 2D 桌子。我希望用户从下拉菜单中选择 2 个类别,并让单元格返回相交值。

实现它的最佳方式是什么?使用 vlookup()、.index、.match()?

谢谢。

【问题讨论】:

  • 是的,这是最好的方法。

标签: arrays vba matrix lookup


【解决方案1】:

索引和匹配(分开)是最好的,就像你把匹配(即查找)放在自己的单元格中,如果你想查找其他列,可以再次使用它。

【讨论】:

    【解决方案2】:

    下面是我的做法:

    设置一些测试数据:

          1       2        3        4
      A  the      quick    brown    fox
      B  jumped   over     the      lazy
      C  dog      and      landed   on
      D  the      large    grazing  cow
    

    然后在单元格 B7 中,我将数据验证设置为列表:=$A$2:$A$5 (这允许我们选择 A-D) 单元格 B8,对列表的数据验证:=$B$1:$E$1 (这让我们可以选择 1-4)

    如果需要,您只需通过 MATCH 将第二个选项转换为数字,然后执行 VLOOKUP:

    =VLOOKUP($B$7,$A$2:$E$5,$B$8+1,FALSE)
    

    【讨论】:

      【解决方案3】:

      vlookup + match 怎么样 :) ?它功能强大,并且产生了一个相当小的公式,如果您整天处理公式,可以省去一些麻烦。我想你有类似我下面的东西(感谢数据集同上!),其中 A2 和 B2 是你的下拉选择。

      公式如下:

      =VLOOKUP(myRow,myTable,MATCH(myCol,myColRng,0),0)
      

      因此,您可以根据匹配查找返回数字,而不是为 vlookup 的列索引参数使用静态数字。因此,列和行都是可搜索的。

      我用命名范围让它看起来很可爱,你可能更喜欢这样做:

      您的两个下拉菜单:

      myCol = A2 myRow = B2

      表和列范围:

      myTable = A4:D7 myColRng = A4:D4

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-06-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-09-25
        • 2015-05-26
        • 1970-01-01
        相关资源
        最近更新 更多