如何基于多个工作表中的列返回列值?

时间:2019-02-04 13:58:41

标签: excel vba excel-formula

我需要从单独的工作表或工作簿中获得两个条件的状态。我有一个ID列,一个Location列和一个Status列(A列(ID),B列(Loc),C列(状态))。

满足ID和位置条件后,它应返回该行的“状态”列的值。例如。如果这是一个SQL查询:

SELECT Status from Source where IDsource=IDDestination && LocSource=LocDestination

我该怎么做?

我尝试了if(and))公式,但无济于事。

2 个答案:

答案 0 :(得分:1)

如果将ID和位置列连接(或连接)到新列中,则可以执行简单的vlookup()

因此,如果您的“数据库”表如下所示:

ID   | Location | Status    
------------------------
  1  |  Home    |   OK
  2  |  Home    |  Broken
  3  |  Work    |   OK

然后使用以下公式,在“位置”和“状态”之间轻松添加另一列:C1中的=A1&"-"&B1

ID   | Location | ID-Location | Status    
--------------------------------------
  1  |  Home    |   1-Home    |   OK
  2  |  Home    |   2-Home    |  Broken
  3  |  Work    |   3-Work    |   OK

如果您随后需要ID 1和位置住所的状态,只需执行以下操作: =Vlookup(A2&"-"&B2,Database!C2:D1000,2,FALSE)在另一个工作表的单元格C2中。

如果存在多个组合,则仅返回第一个匹配项。

答案 1 :(得分:0)

像下面这样的数组公式可以做到:

{=OFFSET(C:C;MIN(IF((A:A="Some ID")*(B:B="Some Location");ROW(C:C);""))-1;0;1;1)}

它有点沉重,但是如果您可以限制行数,它将变得更快:

{=OFFSET(C:C;MIN(IF((A2:A1001="Some ID")*(B2:B1001="Some Location");ROW(C2:C1001);""))-1;0;1;1)}