基于控制单元的一部分求和(Microsoft Excel)
Eszter在A列中有很长的单元格列表,其中包含一系列突变代码,例如“ AKT 142”或“ BRAF 1975”。在B列中是与这些突变代码关联的值。她需要一个公式,该公式将对B列中的值求和,A列中的相应突变代码以相同的序列开头,就像所有以AKT或BRAF开头的序列一样。 Eszter怀疑这可以通过SUMIF函数完成,但是她不知道如何使它仅关注突变代码的第一部分。
有很多方法可以解决此问题,但是在本技巧中,我仅关注三种潜在的解决方案。
使用帮助列
如果您的工作表布局允许,您可以添加一个仅包含突变代码第一部分的帮助器列。由于您的突变代码在A列中,因此您可以在帮助程序列的第一个单元格中插入以下公式:
=LEFT(A1, SEARCH(" ",A1,1)-1)
向下复制它,以获取所需的尽可能多的单元格,最后得到的帮助器列包含空格之前的突变代码中的所有内容。然后,您可以使用所需的SUMIF公式根据助手列的内容求和。
使用SUMPRODUCT
解决问题的一种非常独特的方法是使用SUMPRODUCT函数。假设您在单元格E1中放入了您感兴趣的前言代码。(例如,您可以在单元格E1中放入“ AKT”。)然后可以使用以下公式计算所需的总和:
=SUMPRODUCT(--(LEFT(A:A,LEN($E$1))=$E$1) * B:B)
|||之所以可行,是因为SUMPRODUCT会检查A列中单元格的最左侧部分是否与您在单元格E1中放置的内容匹配。如果是,则比较返回1;否则返回0。如果不是,则返回0。然后将其乘以B列中的相应单元格并求和。
直接使用SUMIF
也许最干净的方法是直接使用SUMIF。通过使用辅助列方法,您知道可以使用SUMIF查看单元格的内容,然后有选择地对另一列求和。您可以通过以下一般方式进行操作:
=SUMIF(Check_Range, Criterion, Sum_Range)
因此,如果要基于A列中的值对B列中的值求和,则可以执行以下操作:
=SUMIF(A:A, "AKT", B:B)
当然,这只会匹配A列中仅包含AKT的那些单元格。但是,这不是Eszter的情况-A列中的突变代码不仅仅包含AKT。这是在标准规范中使用通配符的地方。 Eszter所需要做的就是以这种方式添加一个星号:
=SUMIF(A:A, "AKT*", B:B)
现在,SUMIF仅基于列A中以字母AKT开头的那些单元格返回正确的总和。紧随每个单元格中的AKT字符无关紧要,因为星号告诉Excel它应该“接受跟随这三个字符的任何内容”。
实际上,您甚至可以使这种方法更通用。假设您放置了所需的序言代码(您想要对其进行求和的序言)
进入单元格E1。然后,您可以将以下内容放入单元格E2中:
=SUMIF(A:A, E1 & "*", B:B)
现在,如果E1包含“ AKT”,您将得到该前言代码的值之和。如果将E1更改为“ BRAF”,则无需更改E2中的公式即可获得该序言代码的总和。
_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。
本提示(13614)适用于Microsoft Excel 2007、2010、2013、2016、2019和Office 365中的Excel。