如何在Excel中用多个标准进行查询(2种简单方法)

  • Share This
Hugh West

在Excel中工作时,我们经常要这样做。 我们要在一个数据集中查找满足一个或多个条件的特定值。 今天我将展示如何在Excel中查找一个或多个满足多个条件的数据集的值。

下载实践工作手册

下载这本练习手册,在阅读本文时进行练习。

多个标准的查询.xlsx

在Excel中用多个标准进行查询的2种合适方法

看看下面的数据集,我们有 雇员编号,雇员姓名,加入日期。 工资 的一家公司,名为 Jupyter集团 我们将通过使用以下方法查询具有多个标准的值 索引,匹配,xlookup。 筛选功能 下面是我们今天的任务的数据集的概述。

现在我们将尝试从这组数据中查找符合各种类型的多重标准的值。

方法1:查询AND类型的多个标准

首先,让我们试着查一查一些多重标准的 类型。 这里。 类型的多个标准意味着,一个值必须满足所有的标准才能被选中。 让我们尝试找到一个具有以下特征的雇员 身份证 大于 400 且工资高于 $40000 你可以通过以下方式完成这项任务 3 不同的方式。

1.1 在行和列中结合使用INDEX和MATCH函数

在讲重点之前,你可以去看一眼 索引 匹配 我们将用Excel的函数来找出具有以下特征的雇员 身份证 大于 400 且工资高于 $40000 使用 INDEX-MATCH 公式。 让我们按照下面的说明进行。

步骤。

  • 首先,选择单元格 G7 并写下以下公式。
=INDEX(C5:C16,MATCH(1,(B5:B16>400)*(E5:E16>40000),0),1)

  • 之后,按 进入 因此,我们已经找到了一名有 "小白脸 "的员工。 身份证 大于 400 且工资高于 $40000 , 理查德-塞缪尔森 .

公式分解
  • B5:B16>400 通过所有 身份证 在列 B 的数组,并返回一个 为真 失败 , 为真 当一个 身份证 大于 400 ,否则 失败 .
  • E5:E16>40000 通过所有 薪金 在列 E 的数组,并返回一个 为真 失败 , 为真 当工资大于 $40,000 ,否则 错。
  • (B5:B16>400)*(E5:E16>40000) 的两个数组相乘。 为真 失败 ,并返回一个 1 身份证 大于 400 且工资大于 $40,000 .否则返回 0 .
  • MATCH(1,(B5:B16>400)*(E5:E16>40000),0) 遍历数组 (B5:B16>400)*(E5:E16>40000) 的序列号,并返回第一个 1 它所遇到的。
  • 在这种情况下,它返回5,因为第一个1是在序列号5中。
  • 最后。 INDEX(C5:C16,MATCH(1,(B5:B16>400)*(E5:E16>40000),0),1) 返回范围内的雇员姓名 C5:C16 ,其行数等于该系统的输出。 匹配 函数和列号等于 1 .
笔记 这是一个 阵列公式 所以别忘了按 Ctrl + Shift + Enter 除非你是在 办公室365 .
  • 这是所需的雇员,有一个 身份证 大于 400 且工资高于 $40,000 现在,如果你理解了这一点,你能不能告诉我,用什么公式来找出加入的员工? 2009年12月31日前 ,但仍然领取工资 低于25,000美元 .
  • 之后,在单元格中输入以下公式 G7 .
=index(c5:c16,match(1,(d5:d16)

  • 因此,打 进入 此外,你将得到 安吉拉-霍普金斯 作为公式的回报。

阅读更多。 在Excel中可以使用的7种查询方式

1.2 使用XLOOKUP函数

我们可以用以下方法完成前面的任务 XLOOKUP 但是,请记住。 XLOOKUP 只适用于 办公室365 在讲重点之前,你可以先看一下 XLOOKUP 现在,我们要找出具有以下特征的员工 身份证 大于 400 且工资高于 $40,000 使用 XLOOKUP 功能。 让我们按照下面的指示来学习吧!

步骤。

  • 首先,在单元格中输入以下公式 G7 .
=XLOOKUP(1,(B5:B16>400)*(E5:E16>40000),C5:C16)

  • 结果是,我们得到了与先前相同的雇员。 理查德-塞缪尔森 这是有 "A "的雇员的名字。 身份证 大于 400 且工资高于 $40,000 .

公式分解
  • (B5:B16>400)*(E5:E16>40000) 返回一个数组的 1 0 , 1 身份证 大于 400 且工资大于 $40,000 . 0 否则的话。
  • XLOOKUP(1,(B5:B16>400)*(E5:E16>40000),C5:C16) 首先在数组中搜索1 (B5:B16>400)*(E5:E16>40000). 当它找到一个时,它会返回其相邻单元格在范围内的值 C5:C16 .

阅读更多。 如何在Excel中使用LOOKUP函数(4个合适的例子)

1.3 应用FILTER功能

ǞǞǞ INDEX-MATCH XLOOKUP 公式有一个限制,如果有一个以上的值符合给定的条件,它们只返回第一个值。 例如,在前面的例子中,如果你仔细观察,你会发现,有 雇员有 身份证 大于 400 且工资高于 $40,000 .他们是 理查德-塞缪尔森 乌斯曼-马利克。 INDEX-MATCH XLOOKUP 计算公式返回 只有第一个 雇员。 理查德-塞缪尔森 要获得所有满足给定条件的值,你可以使用 筛选器 但请记住, 筛选器 函数也只在 办公室365 .

步骤。

  • 要找出具有 身份证 大于 400 且工资高于 $40,000 筛选器 公式将是。
=FILTER(C5:C16,(B5:B16>400)*(E5:E16>40000))

  • 之后,这次我们得到了所有维持所有标准的员工。 理查德-塞缪尔森 乌斯曼-马利克 .

公式分解
  • (B5:B16>400)*(E5:E16>40000) 返回一个数组的 1 0 , 1 当ID大于400且工资大于40,000美元时。 0 否则(见 INDEX-MATCH 节)。
  • FILTER(C5:C16,(B5:B16>400)*(E5:E16>40000)) 遍历数组中的所有值 (B5:B16>400)*(E5:E16>40000), 并且当它找到一个 1 ,它从范围内返回相邻的值 C5:C16 .
  • 因此,我们得到的所有员工都有一个 身份证 大于 400 且工资高于 $40,000 .
  • 现在,如果你理解了这一点,你能告诉我,如何找出那些在2008年至2009年期间加入的员工的公式吗? 2014年1月1日。 2016年12月31日 ,但得到的工资是 至少30,000美元 是的,你是对的,公式将是。
=FILTER(C5:C16,(D5:D16>=DATE(2014,1,1))*(D5:D16=30000))

阅读更多。 如何在Excel中查询多个数值(10种方法)

方法2:查询OR类型的多个标准

现在,我们将尝试查找一些满足多个标准的值,这些标准包括 类型。 这里。 类型的标准意味着一个值必须满足所有标准中的至少一个标准才能被选中。 让我们试着找出之前加入的员工 2010年1月1日 或领取的工资超过了 $30,000 .

2.1 合并日期范围内的INDEX和MATCH函数

点击这里访问 索引 功能,并点击这里访问 匹配 如果你愿意的话,在继续进行之前,你可以选择使用函数。

步骤。

  • ǞǞǞ INDEX-MATCH 公式将如下面的公式框所示。
=INDEX(C5:C16,MATCH(TRUE,((D5:D1630000))>0,0),1)

  • 看,我们已经得到了 杰克-辛普森 ,第一个有入职日期的员工 2010年1月1日前 ,或工资 大于30,000美元 但还有很多雇员。 INDEX-MATCH。 我们只得到第一个。
  • 我们将在稍后用 筛选器 这是符合至少一个标准的所需雇员。

公式分解
  • D5:D16 ="" strong=""> 返回一个数组的 为真 失败 . 是的 当列中的加入日期为 D 少于2010年1月1日。 失败 否则的话。
  • E5:E16>30000 也返回一个数组的 是的 失败 . 为真 当工资超过30,000美元时。 失败 否则的话。
  • (D5:D1630000) 将两个数组相加,并返回另一个数组 0, 1, 2 . 0 当不满足任何标准时。 1 当只有一个标准得到满足时,以及 2 当两个标准都得到满足时。
  • ((D5:D1630000))>0 遍历数组的所有值 (D5:D1630000) 并返回 为真 如果该值大于 0 ( 1 2 ),以及 失败 否则( 0 ).
  • MATCH(TRUE,((D5:D1630000))>0,0) 遍历数组中的所有值 ((D5:D1630000))>0 并返回第一个序列号,其中它得到一个 为真 .
  • 在这种情况下,返回 3 因为第一 为真 是连续的 3 .
  • 最后。 INDEX(C5:C16,MATCH(TRUE,((D5:D1630000))>0,0),1) 返回范围内的雇员姓名 C5:C16 的序列号,以及由 匹配 功能。

现在,如果你理解了这一点,你能否告诉我,用什么公式来找出具有以下特征的雇员? 身份证 不到 300, 或加入日期少于1月的 1, 2012, 或工资高于 $30,000 ?

是的,你是对的,公式将是。

=INDEX(C5:C16,MATCH(TRUE,((B5:B16<200)+(D5:D1630000))>0,0),1)

阅读更多。 如何在Excel中查询文本(7种合适的方法)

2.2 应用XLOOKUP函数

你可以用以下方法完成同样的任务 XLOOKUP 在Excel中的函数。 XLOOKUP 只适用于 办公室365 .

步骤。

  • 找到入职日期在1月之前的员工的公式 1, 2010, 或工资高于 $30,000 将是。
=XLOOKUP(TRUE,((D5:D1630000))>0,C5:C16)

  • 看,我们得到了与先前相同的雇员。 杰克-辛普森 但是,正如在 INDEX-MATCH 公式中,有更多的员工符合给定的标准。 我们只得到了第一个。

公式分解
  • ((D5:D1630000))>0 返回 为真 当两个标准中至少有一个得到满足,否则 失败 见上节。
  • XLOOKUP(TRUE,((D5:D1630000))>0,C5:C16) 然后返回列中的雇员姓名 C5:C16 ,在这里它得到了第一个 为真 .

阅读更多。 如何在Excel中从另一个工作表中查询数值(3种简单方法)

2.3 使用FILTER函数

最后,我们将使用以下方法完成同样的任务 筛选器 在Excel中的函数。 筛选器 函数只在 办公室365 这一次,我们将得到所有之前加入的员工。 2010年1月1日。 或领取的工资超过了 $30,000 .

步骤。

  • 该公式将与下面公式框中显示的相同。
=FILTER(C5:C16,((D5:D1630000))>0)

  • 因此,它返回所有符合至少一个给定条件的雇员。
  • 看,这次我们得到了所有符合我们给定标准的员工,入职日期在前 2010年1月1日。 或工资高于 $30,000 .

公式分解
  • ((D5:D1630000))>0 返回 为真 当两个标准中至少有一个得到满足,否则 失败 请看 INDEX-MATCH 节。
  • FILTER(C5:C16,((D5:D1630000))>0) 遍历范围内的所有单元格 C5:C16 但当它遇到一个 为真 .

阅读更多。 如何在Excel中查询表格(8种方法)

总结

使用这些方法,你可以从任何一组数据中查找一些满足多个标准的值。 你还知道其他的方法吗? 或者你有什么问题吗? 请随时向我们提问。

Hugh West is a highly experienced Excel trainer and analyst with over 10 years of experience in the industry. He holds a Bachelor's degree in Accounting and Finance and a Master's degree in Business Administration. Hugh has a passion for teaching and has developed a unique teaching approach that is easy to follow and understand. His expert knowledge of Excel has helped thousands of students and professionals worldwide improve their skills and excel in their careers. Through his blog, Hugh shares his knowledge with the world, offering free Excel tutorials and online training to help individuals and businesses reach their full potential.