根据下拉列表选择索引另一张纸的数据

时间:2019-02-19 06:48:08

标签: excel excel-formula

我有2张纸。为此,Sheet1和Sheet2可以调用它们。 单元格E3至X3将具有公式(N3和O3除外)。 B列具有从B3开始要检查的名称。 Shee2具有与sheet1完全相同的布局,因此sheet1中的值/位置与sheet2相同。 在sheet1的B列中的每一行(具有2个合并的行(因此B3 / B4合并在一起,等等))是sheet2的B列中所有名称的下拉列表。 情况(假设已经输入了sheet2的所有信息): 从B3的下拉列表中选择的名称, E3检查B3的名称。 然后,E3检查工作表2中B列(来自B3)中的匹配项。 然后,E3从sheet2的第3行提取所有数据,并将其输入到相关的列中(E3至X3(N3和O3除外))。

当我在同一张纸上时,我有一个代码来说明我之前的工作方式。但是我已经更改了操作方式,现在放在另一张纸上。 在检查B3的值是否与B列中任何其他行的值匹配之前,只需将其中的数据放入自己的数据中即可。但现在在单独的工作表中,我认为它的工作原理有所不同。我尝试将工作表名称添加到列值的前面,以希望它能正常工作,但是当然没有。

=IF(COUNTIF($B:$B,$B3)>1,INDEX(E:E,MATCH($B3,$B:$B,0)),"")

我还尝试将其更改为Sheet2 = B3中的IF列B,然后进行索引,但是没有用,但我可能做得不好。 有什么想法吗?

1 个答案:

答案 0 :(得分:1)

如果我正确地理解了您的问题并参考了之前的问题,那么我猜您将需要这样的东西:

=IF(COUNTIF(Sheet2!$B:$B,$B3)>1,INDEX(Sheet2!E:E,MATCH($B3,Sheet2!$B:$B,0)),"")

尽管现在可能不存在具有循环引用的风险,所以您可能可以摆脱:

=IFERROR(INDEX(Sheet2!E:E,MATCH($B3,Sheet2!$B:$B,0)),"")

如果要添加工作表名称,语法为Sheetname!Range。如果Sheetname包含空格,则必须用单引号将名称引起来,例如'Sheet name'!Range