2013-02-21 67 views
2

我有3个存储为命名范围的表。
用户使用下拉框选择要搜索的范围。命名的范围是Table1,Table2Table 3Excel公式:从多个命名范围查找

表1

0.7  0.8  0.9 
50 1.08 1.06 1.04 
70 1.08 1.06 1.05 
95 1.08 1.07 1.05 
120 1.09 1.07 1.05 

表2

0.7  0.8  0.9 
16 1.06 1.04 1.03 
25 1.06 1.05 1.03 
35 1.06 1.05 1.03 

表3

0.7  0.8  0.9 
50 1.21 1.16 1.11 
70 1.22 1.16 1.12 
95 1.22 1.16 1.12 
120 1.22 1.16 1.12 

然后他们挑选从标题行的值,并从第一列中的值。
即用户选择Table3,0.895。我的公式应该返回1.16

我有一半使用indirecttable1),但是我需要提取标题行和第一列,所以我可以使用类似

=INDEX(INDIRECT(pickedtable),MATCH(picked colref,INDIRECT(pickedtable:1)), MATCH(picked rowref,INDIRECT(1:pickedtable))) 

任何想法如何实现这一目标?

+2

您是否在谈论“Excel表”,即您使用插入 - >表创建它?你能否粘贴一个链接到屏幕截图以获得更好的清晰度? – 2013-02-21 07:54:51

回答

1

INDIRECT(pickedtable)应努力确定以表但要获得第一列或者您可以使用INDEX与这一点,所以按照你原来的做法表行这个公式应该工作

=INDEX(INDIRECT(pickedtable),MATCH(pickedcolref,INDEX(INDIRECT(pickedtable),0,1),0),MATCH(pickedrowref,INDEX(INDIRECT(pickedtable),1,0),0)) 

或者您可以使用HLOOKUPVLOOKUP按照chris neilsen的方法缩短,例如与VLOOKUP

=VLOOKUP(pickedcolref,INDIRECT(pickedtable),MATCH(pickedrowref,INDEX(INDIRECT(pickedtable),1,0),0)) 
+0

我很接近这个,我曾尝试使用索引与偏移量,但我得到的语法错误。这正是我正在寻找的。谢谢堆!!! – Benaiah 2013-02-22 01:12:59

+0

+1漂亮的解决方案。 – brettdj 2013-02-23 05:01:04

0

试试这个

=HLOOKUP(pickedcolref, 
    IF(pickedtable=1,Table1,IF(pickedtable=2,Table2,IF(pickedtable=3,Table3,""))), 
    MATCH(pickedrowref, 
    OFFSET(
     IF(pickedtable=1,Table1,IF(pickedtable=2,Table2,IF(pickedtable=3,Table3,""))), 
    0,0,,1) 
    ,0) 
,FALSE) 
+0

谢谢,我不知道如何正确使用偏移,直到我看到这篇文章。 – Benaiah 2013-02-22 01:11:09