本教程显示了如何使用索引和匹配以及其他几种方式在Excel中使用多个标准查找。
尽管Microsoft Excel为垂直和水平查找提供了特殊功能,但专家用户通常会用索引匹配替换它们,这在许多方面都优于vlookup和hlookup。除其他外,它可以在列和行中查找两个或多个标准。本教程详细说明了语法和内部力学,以便您可以轻松地调整特定需求的公式。为了使示例更容易遵循,欢迎您下载我们的示例工作簿。
Excel索引与多个标准匹配
在使用大型数据库时,您有时可能会发现自己需要找到某些东西,但没有唯一的搜索标识符。在这种情况下,有几种条件的查找是唯一的解决方案。
要根据单独列中的多个标准查找值,请使用此通用公式:
{= index( return_range ,match(1,( criteria1 = range1 ) *( criteria2 = range2 ) *(…),0)}}}}在哪里:
- return_range是返回值的范围。
- 标准1 ,标准2 ,…是要满足的条件。
- Range1 , Range2 ,…是应测试相应标准的范围。
重要说明!这是一个数组公式,必须在Ctrl Shift Enter中完成。这将使您的公式包含在{curly brokkets}中,这是Excel中数组公式的视觉迹象。不要尝试手动键入牙套,那将行不通!
公式是标志性索引匹配的高级版本,该版本根据单个标准返回匹配项。为了评估多个标准,我们使用在数组公式中用作和运算符的乘法操作。下面,您将找到一个现实生活中的示例和逻辑的详细说明。
提示。在Excel 365和2021中,您可以使用具有多个标准的Xlookup公式。
索引与多个标准匹配 - 公式示例
在此示例中,我们将在其自己的行上使用所谓的“扁平文件”格式中的表格(在我们的情况下为月度数字)。我们的目标是在特定地区和月份中检索某些项目的销售数字。
借助以下单元格中的源数据和标准:
- return_range (销售)-D2:D13
- 标准1 (目标区域)-G1
- 标准2 (目标月)-G2
- 标准3 (目标项目)-G3
- Range1 (区域)-A2:A13
- 范围2 (月)-B2:B13
- 范围3 (项目)-C2:C13
该公式采用以下形状:
=INDEX(D2:D13, MATCH(1, (G1=A2:A13) * (G2=B2:B13) * (G3=C2:C13), 0))
输入公式,例如在G4中,通过按CTRL Shift Enter来完成它,您将获得以下结果:
该公式如何工作
最棘手的部分是匹配功能,所以让我们首先弄清楚:
MATCH(1, (G1=A2:A13) * (G2=B2:B13) * (G3=C2:C13), 0))
您可能还记得,匹配(lookup_value,lookup_array,[match_type])在查找数组中搜索查找值,并在数组中返回该值的相对位置。
在我们的公式中,论点如下:
- Lookup_value :1
- Lookup_array :( g1 = a2:a13) *(g2 = b2:b13) *(g3 = c2:c13)
- match_type :0
第1个参数是晶体清晰的 - 函数搜索数字1。设置为0的3 rd参数表示“精确匹配”,即公式返回第一个发现的值,该值完全等于查找值。
问题是 - 为什么我们要搜索“ 1”?要获取答案,让我们仔细查看查找阵列,在该阵列中,我们将每个标准与相应的范围进行比较:G1中的目标区域与所有区域(A2:A13)(A2:A13),G2中的目标月对所有月份(B2:B13)和G3中的目标项目(C2:C2:C13)。中间结果是3个真实和错误的阵列,而true表示满足已测试条件的值。要可视化这一点,您可以在公式中选择单个表达式,然后按F9键查看每个表达式评估的内容:
乘法操作分别将真实值和错误值分别转换为1和0:
{1;1;1;1;1;1;0;0;0;0;0;0} * {0;0;1;1;0;0;0;0;1;1;0;0} * {1;0;1;0;1;0;1;0;1;0;1;0}
而且由于乘以0总是给出0,因此结果数组仅在满足所有标准的行中只有1个:
{0;0;1;0;0;0;0;0;0;0;0;0}
上面的数组转到匹配的Lookup_array参数。使用Lookup_value为1,该函数返回所有标准为真的行的相对位置(在我们的情况下第3行)。如果数组中有几个1,则返回第一个位置。
匹配返回的数字直接转到索引的row_num参数(array,row_num,[column_num])函数:
=INDEX(D2:D13, 3)
它产生的结果为$ 115,这是D2:D13数组中的3 rd值。
具有多个标准的非阵列索引匹配公式
上一个示例中讨论的阵列公式适合经验丰富的用户。但是,如果您正在为他人建立一个公式,并且某人不知道数组功能,他们可能会无意中打破它。例如,用户可以单击您的公式检查它,然后按Enter而不是Ctrl Shift Enter 。在这种情况下,明智的做法是避免阵列并使用更具防弹性的常规公式:
index( return_range ,match(1,index(( criteria1 = range1 ) *( criteria2 = range2 ) *(..),0,1),0),0))对于我们的示例数据集,公式如下:
=INDEX(D2:D13, MATCH(1, INDEX((G1=A2:A13) * (G2=B2:B13) * (G3=C2:C13), 0, 1), 0))
该公式如何工作
由于索引函数可以本地处理数组,因此我们添加了另一个索引来处理1和0的数组,该数组是通过乘以两个或多个true/false数组创建的。第二个索引配置为0 row_num参数,以使公式返回整个列数组而不是单个值。由于它是一个单列数组,因此我们可以安全地为Column_num提供1:
INDEX({0;0;1;0;0;0;0;0;0;0;0;0}, 0, 1) returns {0;0;1;0;0;0;0;0;0;0;0;0}
此数组传递给匹配功能:
MATCH(1, {0;0;1;0;0;0;0;0;0;0;0;0}, 0)
匹配找到所有标准为真的行(更准确地说,是指定数组中该行的相对位置),并将该编号传递给第一个索引的Row_num参数:
=INDEX(D2:D13, 3)
索引与行和列中的多个标准匹配
此示例显示了如何通过在行和列中测试两个或多个标准来执行查找。实际上,这是一个更复杂的情况,即带有多个标头行的所谓“矩阵查找”或“双向查找”。
这是一行和列中有多个标准的通用索引匹配公式:
{= index( table_array ,match( vlookup_value , lookup_column ,0),match( hlookup_value1 & hlookup_value2 , lookup_row1 &lookup_row1& lookup_row2,0 )})}))})在哪里:
table_array-在内部搜索的地图或区域,即所有数据值不包括列和行标头。
vlookup_value-您在列中垂直寻找的值。
Lookup_column-通常要搜索的列范围,通常是行标头。
hlookup_value1,hlookup_value2,… - 在行中水平寻找的值。
Lookup_row1,Lookup_row2,… - 行搜索范围,通常是列标题。
重要说明!为了使公式正确工作,必须将其作为带有Ctrl Shift Enter的数组公式输入。
它是经典的双向查找公式的变体,该公式在某个行和列的交点处搜索一个值。不同之处在于,您将几个Hlookup值和范围串联以评估多个列标题。为了更好地理解逻辑,请考虑以下示例。
带有多个标准的矩阵查找 - 公式示例
在下面的示例表中,我们将根据行标头(项目)和2列标题(区域和供应商)搜索一个值。为了使公式易于构建,让我们首先定义所有标准和范围:
- table_array -b3:e4
- vlookup_value (目标项目)-H1
- Lookup_column (行标头:项目) - A3:A4
- hlookup_value1 (目标区域)-H2
- hlookup_value2 (目标供应商)-H3
- Lookup_row1 (列标题1:区域)-B1:E1
- Lookup_row2 (列标题2:供应商)-B2:E2
现在,将论点提供到上面解释的通用公式中,您将获得此结果:
=INDEX(B3:E5, MATCH(H1,A3:A5,0), MATCH(H2&H3,B1:E1&B2:E2,0))
请记住,通过按CTRL Shift输入快捷方式来完成该公式,并且您的矩阵查找具有多个标准:将成功完成:
该公式如何工作
当我们垂直和水平搜索时,我们需要为索引(array,row_num,column_num)函数提供行和列号。
ROW_NUM通过Match(H1,A3:A5,0)提供,将H1中的目标项目(苹果)与A3:A5中的行标头进行比较。这给出了1的结果,因为“苹果”是指定范围中的第一项。
column_num是通过连接2个查找值和2个查找数组来制定的:匹配(H2&H3,B1:E1&B2:E2,0))
成功的关键因素是查找值应与列标题完全匹配,并以相同的顺序连接。要可视化这一点,请在匹配公式中选择前两个参数,请按F9 ,您将看到每个参数评估的内容:
MATCH("NorthVendor 2", {"NorthVendor 1", "NorthVendor 2", "SouthVendor 1", "SouthVendor 2"}, 0)
由于“ Northvendor 2”是阵列中的第二个元素,因此函数返回2。
在这一点上,我们冗长的二维索引匹配公式将其转换为这个简单的索引:
=INDEX(B3:E5, 1, 2)
并在b3:e5范围内的第一行和第二列的相交处返回一个值,该值是单元格C3中的值。
这就是如何查找Excel中的多个标准。我感谢您阅读,并希望下周在我们的博客上见到您!
练习工作簿下载
Excel索引匹配多个标准(.xlsx文件)
以上是Excel索引与多个标准匹配 - 公式示例的详细内容。更多信息请关注PHP中文网其他相关文章!

本文将指导您完成为Excel Pivot表和图表创建时间表的过程,并演示如何使用它以动态和引人入胜的方式与数据进行交互。 您的数据在Pivo中组织了

本文说明了如何使用数据验证(包括单个和因列表)在Excel中创建下拉列表。 它详细介绍了该过程,为常见方案提供解决方案,并讨论诸如数据输入限制和PE之类的限制

掌握Google表格分类:综合指南 在Google表中对数据进行排序不需要复杂。本指南涵盖了各种技术,从整个床单到特定范围,按颜色,日期和多个列。 无论你是诺维


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

适用于 Eclipse 的 SAP NetWeaver 服务器适配器
将Eclipse与SAP NetWeaver应用服务器集成。

PhpStorm Mac 版本
最新(2018.2.1 )专业的PHP集成开发工具

SublimeText3汉化版
中文版,非常好用

螳螂BT
Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

VSCode Windows 64位 下载
微软推出的免费、功能强大的一款IDE编辑器