Excel 多列与多列查找

Excel 多列与多列查找,excel,excel-formula,Excel,Excel Formula,我在寻找一个公式来匹配两个工作表之间的许多列,并返回最后一个参考工作表的最终列数据。我知道这在VBA中是可行的,但我正在寻找一种公式方法 主要工作表: User | Region | Country | City | Lookup -------------------------------------------------- User1 | Europe | Italy | Rome | [formula here] User2 | Americas | Brazil |

我在寻找一个公式来匹配两个工作表之间的许多列,并返回最后一个参考工作表的最终列数据。我知道这在VBA中是可行的,但我正在寻找一种公式方法

主要工作表:

User  | Region   | Country | City | Lookup
--------------------------------------------------
User1 | Europe   | Italy   | Rome | [formula here]
User2 | Americas | Brazil  | Rio  | [formula here]
Region   | Country | City   | Data
-----------------------------------
Europe   | England | London | some data
Americas | Brazil  | Rio    | more data
Europe   | Italy   | Rome   | some more data
参考工作表:

User  | Region   | Country | City | Lookup
--------------------------------------------------
User1 | Europe   | Italy   | Rome | [formula here]
User2 | Americas | Brazil  | Rio  | [formula here]
Region   | Country | City   | Data
-----------------------------------
Europe   | England | London | some data
Americas | Brazil  | Rio    | more data
Europe   | Italy   | Rome   | some more data
我所追求的公式应该匹配该特定行中的每一列,并将引用工作表中的数据单元格值添加到主工作表中

eg. If (MainWorksheet.Region = ReferenceWorksheet.Region) &&
       (MainWorksheet.Country == ReferenceWorksheet.Country) && 
       (MainWorksheet.Region == ReferenceWorksheet.Region) Then
    MainWorksheet.Column E = ReferenceWorksheet.Current Row:Data Column
我还没有找到一种使用VLOOKUP、INDEX(MATCH))等多个列来实现这一点的干净方法。有没有在函数中进行过滤的方法


非常感谢您的帮助

对于这种类型的问题,我使用的解决方案是创建一个额外的列作为每个表的唯一标识符。所以,在你的情况下

主表:假设从列1=A开始,键的公式为

E2 = B2 & "(underscore)" & C2 & "(underscore)" & D2

User  | Region   | Country | City | Key                 | Lookup        
--------------------------------------------------
User1 | Europe   | Italy   | Rome | Europe_Italy_Rome   | [formula here]
User2 | Americas | Brazil  | Rio  | Americas_Brazil_Rio | [formula here]
参考表:在这里,在左边插入额外的列,这样您就可以对其进行vlookup。A2中键的公式为

A2 = B2 & "(underscore)" & C2 & "(underscore)" & D2


Key                   | Region   | Country | City   | Data
---------------------------------------------------------------------
Europe_England_London | Europe   | England | London | some data
Americas_Brazil_Rio   | Americas | Brazil  | Rio    | more data
Europe_Italy_Rome     | Europe   | Italy   | Rome   | some more data
然后,主表中的查找公式变得非常简单:

F2 = VLOOKUP(E2, ReferenceTable!$A$2:$E$4, 5, 0)

然后,如果需要,可以对用户隐藏键列。这种方法的优点是,它使公式保持简单,并且比编写VBA或复杂公式更容易理解和更新

我同意vasek1的观点,添加额外的列将简化所需的公式,但如果您想避免额外的列,有[相对]简单的方法可用

方法1-执行与vasek1相同的连接…但在公式内,例如在E2中 主要

=索引(Ref!D$2:D$100,匹配(B2&“-”&C2&“-”&D2,Ref!A$2:A$100&“-”&Ref!B$2:B$100&“-”&Ref!C$2:C$100,0))

需要使用CTRL+SHIFT+ENTER确认公式

方法2-具有查找功能的非数组版本

=查找(2,1/(参考!A$2:A$100=B2)/(参考!B$2:B$100=C2)/(参考!C$2:C$100=D2),参考!D$2:D$100)

请注意,第一个公式查找第一个匹配项,后者查找最后一个。我假设参考数据只包含每个地区/国家/城市组合的一个实例,在这种情况下,它们都会给出相同的结果,但这并不是在所有情况下都能保证的

若要允许C2成为
意思是“任何国家”(根据注释),您可以使用此修订版的查找公式

=查找(2,1/(Ref!A$2:A$100=B2)/(Ref!B$2:B$100=C2)+(C2=”“)/(Ref!C$2:C$100=D2),Ref!D$2:D$100)


索引/匹配版本也可以应用类似的更改,这里有一个简单的多列匹配示例(搜索此类公式时经常出现的方法):

在E10中:

=IFERROR(INDEX(E3:E5,MATCH(B10&C10&D10,$B$3:$B$5&$C$3:$C$5&$D$3:$D$5,0),1),"No Match")
输入公式时,请确保使用Ctrl+Shift+Enter

发布此邮件以注意您应该注意的一个问题:上面的示例与:

 B | Two | Blue
但它也将在以下方面匹配:

 BT | wo | Blue

您需要的通常称为多重查找。 有人以各种形式多次提出这一问题。 我已经整理了一份此类帖子的列表。 (这个在列表中)

有许多可能的解决办法。 显示了我发现最健壮的一个。 根据这种情况,
E3
中的公式为

=INDEX(Ref!D:D,SUMPRODUCT(--(Ref!A:A=B3),--(Ref!B:B=C3),--(Ref!C:C=D3),ROW(Ref!D:D)),0)

然后向下复制。

谢谢你的回复。我的一些行中有“”表示该特定地区的任何国家。你知道这是怎么形成的吗?@Bonjour没问题,我添加了另一个公式来适应这种情况-我假设“”在工作表的主列CThanks中,代表回答伙伴。我的一些行中有“”表示该特定地区的任何国家。你知道怎么会这样吗?很好的解决方案。一个让你想知道“为什么我没想到这个!?”xD