我试图在工作表上创建一个下拉列表,用于在另一张工作表中查找匹配的值。下图是名为的工作表PricesforCSV
。在这里,我希望 B 列中带圆圈的值是从第二张名为的工作表中提取的值invoiceLookup
:
如您所见,到目前为止,我已使用数据验证来使下拉菜单正常工作。它的定义如下=invoiceLookup!$D:$D
:
我想要查找的信息的表格invoiceLookup
如下。E 列是我想要传达的价格。
在 B 列中带圆圈的单元格中,PricesforCSV
我尝试根据下拉列表的值执行查找。这是我目前针对此单元格使用的公式:
=IF(ISNA(VLOOKUP(A3,invoiceLookup!D2:D300,2,0)),
VLOOKUP(A3,invoiceLookup!E2:E300,2,0))
目前它返回的是 false。
这里的想法是搜索中的所有行以查找invoiceLookup!D2:D300
与中的值匹配A3
,如果找到,则用下一列中的相关值填充单元格:invoiceLookup!E2:E300
。
- 我不确定这是最好的方法,我可以使用两列命名列表并从中获取值吗?
- 下拉列表中的项目中可能存在空格的问题,但尝试没有空格的值目前无法解决问题。
感谢您花时间查看!
答案1
在很多情况下,只需花时间正确地提出问题,并用全新的视角简化公式,直到我开始看到结果并找到答案。
这就是我得出的结论:
=IF(NOT(ISNA(VLOOKUP(A3,invoiceLookup!$D:$E,2,0))),VLOOKUP(A3,invoiceLookup!$D:$E,2,0))
第一个问题出现在 VLOOKUP 中,数组中的第二个值是存储返回值的位置,我以为它要求查找的起点和终点。实际上,我在与查找值相同的列中查找返回值。更正后的版本现在查看查找的整个列
$D
和返回值的整个列$E
:VLOOKUP(A3,invoiceLookup!$D:$E,2,0)
我也误解了当有一个空单元格时
ISNA
返回的内容(我认为相反),这导致我添加了公式的前半部分:true
NOT
=IF(NOT(ISNA(VLOOKUP(A3,invoiceLookup!$D:$E,2,0))), ...
编辑 ----------------------- 稍作修改,因为旧版本将“FALSE”添加到具有空值的单元格。以下内容将单元格留空:
=IF(ISNA(VLOOKUP(A20,invoiceLookup!$D:$E,2,FALSE)),"",VLOOKUP(A20,invoiceLookup!$D:$E,2,FALSE))
/编辑 - - - - - - - - - - -
我意识到 Excel 公式并没有获得那么多的流量,因为在过去的一天中只有大约 19 个人查看过它,但是对于那些再次遇到这个问题的人来说,我希望它是有用的。