使用2维表查找VBA

时间:2015-02-09 20:37:44

标签: arrays vba matrix lookup

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

实施该方法的最佳方法是什么?使用vlookup(),. index,.match()?

感谢。

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

以下是我的观点:

设置一些测试数据:

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

然后在Cell B7中,我将数据验证设置为List:=$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)

答案 2 :(得分:0)

vlookup +匹配怎么样:)?它是强大的,并产生一个相当小的公式,如果你整天处理公式可以节省一些头痛。我想你有类似我以下的东西(感谢数据集Ditto!),其中A2和B2是你的下拉选项。

enter image description here

这是公式:

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

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

我觉得你喜欢做的命名范围看起来很可爱:

你的两个下降:

myCol = A2 myRow = B2

表和列范围:

myTable = A4:D7 myColRng = A4:D4