Table of contents
在本教程中,你会发现一些高级公式的例子,演示如何使用Excel的VLOOKUP和SUM或SUMIF函数,根据一个或几个标准来查询和计算数值。
你是否试图在Excel中创建一个摘要文件,以确定一个特定值的所有实例,然后对与这些实例相关的其他值进行求和? 或者,你需要在一个数组中找到符合你指定条件的所有值,然后对另一个工作表中的相关值进行求和? 或者,你可能面临一个更具体的挑战,比如通过一个表的你公司的发票,确定某个特定供应商的所有发票,然后将所有发票价值相加?
任务可能有所不同,但本质是一样的--你想在Excel中用一个或几个标准来查询和求和。 什么样的值? 任何数字值。 什么样的标准? 任何:)从一个数字或对包含正确值的单元格的引用开始,到逻辑运算符和Excel公式返回的结果结束。
那么,Microsoft Excel有没有什么功能可以帮助完成上述任务呢? 当然有!你可以通过将Excel的VLOOKUP或LOOKUP与SUM或SUMIF函数结合起来,制定出一个解决方案。 下面的公式例子将帮助你了解这些Excel函数的工作原理以及如何将它们应用于真实数据。
请注意,这些是高级的例子,意味着你已经熟悉了VLOOKUP函数的一般原理和语法。 如果不是,我们的VLOOKUP初学者教程的第一部分肯定值得你注意--Excel VLOOKUP语法和一般用法。
Excel VLOOKUP和SUM--查找匹配值的总和
如果你在Excel中处理数字数据,很多时候你不仅要从另一个表中提取相关数值,还要对几列或几行的数字进行求和。 要做到这一点,你可以使用SUM和VLOOKUP函数的组合,如下图所示。
来源数据。
假设,你有一个产品清单,其中有几个月的销售数字,每个月有一列。 源数据在名为 月销售额 :
现在,你想制作一个汇总表,列出每个产品的总销售额。
解决办法是在第三个参数中使用一个数组( col_index_num 下面是一个通用公式。
SUM(VLOOKUP( 查询值 , 查询范围 , {2,3,...,n}, FALSE))正如你所看到的,我们在第三个参数中使用了一个数组常数,在同一个VLOOKUP公式中进行多次查找,以获得第2、3、4列的数值之和。
现在,让我们为我们的数据调整这个VLOOKUP和SUM函数的组合,以找出上表中B-M列的销售总额。
=SUM(VLOOKUP(B2, '月销售额'! $A$2:$M$9, {2,3,4,5,6,7,8,9,10,11,12,13}, FALSE)
重要的是! 因为你正在建立一个数组公式,所以当你完成输入时,一定要按下Ctrl + Shift + Enter键,而不是简单的Enter键。 当你这样做时,Microsoft Excel会将你的公式包围在大括号里,就像这样。
{=SUM(VLOOKUP(B2, 'Monthly sales'!$A$2:$M$9, {2,3,4,5,6,7,8,9,10,11,12,13}, FALSE)}。
如果你按下 进入 像往常一样,只有数组中的第一个值会被处理,这将产生不正确的结果。
提示:你可能很好奇,为什么在上面的截图中,公式显示[@Product]为查询值。 这是因为我把我的数据转换为表格( 插入 标签> 表 我发现使用功能齐全的Excel表格及其结构化引用非常方便。 例如,当你在一个单元格中输入公式时,Excel会自动将其复制到整列中,这样就为你节省了几秒钟的宝贵时间 :)
正如你所看到的,在Excel中使用VLOOKUP和SUM函数是很容易的。 然而,这并不是理想的解决方案,特别是当你在处理大的表格时。 关键是,使用数组公式可能会对工作簿的性能产生不利影响,因为数组中的每个值都会单独调用VLOOKUP函数。 因此,数组中的值越多,数组公式就越多。你的工作簿,Excel的工作速度就越慢。
你可以通过使用INDEX和MATCH函数的组合来绕过这个问题,而不是使用SUM和VLOOKUP,我将在下一篇文章中向你展示几个公式例子。
下载这个VLOOKUP和SUM样本
如何用Excel VLOOKUP函数进行其他计算
刚才我们讨论了一个例子,即如何从查找表中的几列提取数值并计算这些数值的总和。 以同样的方式,你可以用VLOOKUP函数返回的结果进行其他数学计算。 下面是几个公式例子。
运作 | 公式示例 | 描述 |
---|---|---|
计算平均数 | {=AVERAGE(VLOOKUP(A2, 'Lookup Table'$A$2:$D$10, {2,3,4}, FALSE)}。 | 该公式在 "查找表 "中搜索单元格A2的值,并计算同一行中B、C和D列的平均值。 |
寻找最大值 | {=MAX(VLOOKUP(A2, 'Lookup Table'$A$2:$D$10, {2,3,4}, FALSE))} | 该公式在 "查找表 "中搜索A2单元格的值,并在同一行的B、C和D列中找到最大值。 |
寻找最小值 | {=MIN(VLOOKUP(A2, 'Lookup Table'$A$2:$D$10, {2,3,4}, FALSE)} | 该公式在 "查找表 "中搜索A2单元格的值,并在同一行的B、C和D列中找到最小值。 |
计算总和的百分比 | {=0.3*SUM(VLOOKUP(A2, 'Lookup Table'$A$2:$D$10, {2,3,4}, FALSE))} | 该公式在 "查找表 "中搜索单元格A2的值,对同一行中B、C和D列的值进行求和,然后计算出30%的和。 |
注意:由于上述公式都是数组公式,记得按Ctrl+Shift+Enter键,在单元格中正确输入这些公式。
如果我们将上述公式添加到前面例子中的 "销售摘要 "表中,结果将类似于这样。
下载这个VLOOKUP计算样本
LOOKUP AND SUM - 在数组中查找并对匹配的值进行求和
如果你的查询参数是一个数组,而不是一个单一的值,那么VLOOKUP函数就无能为力了,因为它不能在数据数组中查询。 在这种情况下,你可以使用Excel的LOOKUP函数,它与VLOOKUP类似,但对数组和单个值都有作用。
让我们考虑下面的例子,以便你能更好地理解我在说什么。 假设,你有一个表,列出了客户名称、购买的产品和数量( 主桌 你还有一个包含产品价格的第二个表( 查询表 ).你的任务是制定一个公式,找出某个客户所有订单的总数。
正如你所记得的,你不能利用Excel的VLOOKUP函数,因为你有多个实例的查找值(数据数组)。 相反,你使用SUM和LOOKUP函数的组合,像这样。
=SUM(LOOKUP($C$2:$C$10,'查询表'!$A$2:$A$16,'查询表'!$B$2:$B$16)*$D$2:$D$10*($B$2:$B$10=$G$1))
由于这是一个数组公式,记得要按Ctrl + Shift + Enter来完成。
现在,让我们分析一下这个公式的成分,以便你了解每个函数是如何工作的,并能根据自己的数据进行调整。
我们先把SUM函数放在一边,因为它的作用是显而易见的,而把重点放在被乘的3个部分。
LOOKUP($C$2:$C$10,'查询表'!$A$2:$A$16,'查询表'!$B$2:$B$16)
这个LOOKUP函数查找主表C列中列出的商品,并从查找表中的B列返回相应的价格。
D$2:D$10
这个组件返回每个客户购买的产品的数量,这些数量列在主表的D列中。 乘以上面LOOKUP函数返回的价格,就可以得到每个购买产品的成本。
$b$2:$b$10=$g$1
这个公式将B列中的客户名称与G1单元格中的名称进行比较,如果发现匹配,则返回 "1",否则返回 "0"。 你使用它只是为了 "切断 "G1单元格中名称以外的客户名称,因为我们都知道任何数字乘以0都是0。
因为我们的公式是一个数组公式,它对查找数组中的每个值都进行了上述过程。 最后,SUM函数对所有乘法的乘积进行求和。 一点都不难,是吗?
注意:为了使LOOKUP公式正常工作,你需要将Lookup表中的查找列按升序排序(从A到Z)。 如果你的数据不能接受排序,请查看Leo建议的一个很棒的SUM / TRANSPOSE公式。
下载这个LOOKUP和SUM样本
VLOOKUP和SUMIF - 查找&;用标准求和值
Excel的SUMIF函数与我们刚才讨论的SUM类似,也是对数值进行求和。 不同的是,SUMIF函数只对那些符合你指定条件的数值进行求和。 例如,最简单的SUMIF公式是 =SUMIF(A2:A10,">10")
将A2至A10单元格中大于10的数值相加。
这很简单,对吗? 现在让我们考虑一个更复杂的情况。 假设你有一个表,列出了销售人员的姓名和ID号码( 查询表 你有另一个表,其中包含相同的ID和相关的销售数字( 主表 ).你的任务是根据某个人的ID找到其销售总额。 在这一点上,有两个复杂的因素。
- 邮件表包含同一ID的多个条目,顺序随机。
- 你不能把 "销售人员姓名 "列添加到主表中。
现在,让我们做一个公式,首先,找到某个人的所有销售额,其次,将找到的数值相加。
在我们开始讨论这个公式之前,让我提醒你SUMIF函数的语法。
SUMIF(range, criteria, [sum_range])范围
- 这个参数不言自明,只是一个你想通过指定的标准来评估的单元格范围。标准
- 告诉公式什么值要加的条件。 它可以以数字、单元格引用、表达式或其他Excel函数的形式提供。总数_范围
- 这个参数是可选的,但对我们来说非常重要。 它定义了要添加相应单元格值的范围。 如果省略,Excel将对范围参数(第一个参数)中指定的单元格值进行求和。
牢记上述信息,让我们为SUMIF函数定义3个参数。 正如你所记得的,我们想对主表F2单元格中输入的某个人的所有销售额进行求和(请看上图)。
- 范围 - 因为我们是通过销售人员的ID来搜索,所以 范围 我们的SUMIF函数的参数是主表中的B列。 因此,你可以输入范围B:B,或者如果你将数据转换为表格,你可以使用列的名称来代替。
Main_table[ID]
- 标准 - 因为我们在另一个表中有销售人员的名字(查找表),所以我们必须使用VLOOKUP公式来查找与某个人相对应的ID。 这个人的名字写在主表的F2单元格中,所以我们使用这个公式来查找它。
VLOOKUP($F$2,Lookup_table,2,FALSE)
当然,你可以在VLOOKUP函数的查找条件中输入名字,但使用绝对的单元格引用是一个更好的方法,因为这创建了一个通用的公式,对特定单元格中的任何名字输入都有效。
- 总和范围 - 由于我们的销售数字是在名为 "销售 "的C列中,我们只需把
Main_table[销售]
.现在,你只需要将公式的各个部分组合起来,你的SUMIF+VLOOKUP公式就准备好了。
=SUMIF(Main_table[ID], VLOOKUP($F$2, Lookup_table, 2, FALSE), Main_table[Sales] )
下载这个VLOOKUP和SUMIF样本
在Excel中做Vlookup的无公式方法
最后,让我向你介绍一个工具,它可以在没有任何函数或公式的情况下查询、匹配和合并你的表格。 我们的Excel终极套件所包含的合并表格工具是作为Excel的VLOOKUP和LOOKUP函数的一个省时且易于使用的替代品而设计和开发的,它对初学者和高级用户都很有帮助。
你只需指定你的主表和查找表,定义一个或多个公共列,并告诉向导你想获取什么数据,而不是弄清公式。
如果你认为这个插件对你的工作有帮助,我们非常欢迎你使用下面的链接下载试用版。
可用的下载
带有SUM和SUMIF的VLOOKUP - 公式示例(.xlsx文件)
终极套房 - 试用版 (.exe文件)