Excel 如果提供了标题名称,如何计算列中的项目总数
对不起!也许我不能给出一个好的题目。我有以下样本数据。显然,在实际数据的情况下,它将是不同的和更多的 数据截图 假设我将Excel 如果提供了标题名称,如何计算列中的项目总数,excel,excel-formula,Excel,Excel Formula,对不起!也许我不能给出一个好的题目。我有以下样本数据。显然,在实际数据的情况下,它将是不同的和更多的 数据截图 假设我将Pen放在D17单元格中,则预期结果将是E17单元格中的6,如表/DataArrayPen列中有6项。如果我把T-Shirt放在D17单元格中,计数应该是4,依此类推 相信我,我尝试了许多公式的组合,在谷歌上搜索,但没有找到满意的解决方案我可以通过VBA实现它,但我正在尝试仅使用excel公式来解决它。您可以在单元格E17中使用此数组公式: = SUMPRODUCT(MMUL
Pen
放在D17
单元格中,则预期结果将是E17
单元格中的6
,如表/DataArrayPen
列中有6项。如果我把T-Shirt
放在D17
单元格中,计数应该是4
,依此类推
相信我,我尝试了许多公式的组合,在谷歌上搜索,但没有找到满意的解决方案我可以通过
VBA
实现它,但我正在尝试仅使用excel公式来解决它。您可以在单元格E17
中使用此数组公式:
= SUMPRODUCT(MMULT((B3:K3=D17)+0,TRANSPOSE(NOT(ISBLANK(B4:K13))+0)))
注意:由于这是一个数组公式,您必须在键入此公式后按Ctrl+Shift+Enter键,而不是只按Enter键。如果用户知道设置偏移()函数高度的最大行数,这将计算非空白:
=SUM((OFFSET(B3,1,MATCH(D16,B3:J3,0)-1,10,1)<>"")*1)
=和((偏移量(B3,1,匹配(D16,B3:J3,0)-1,10,1)”)*1)
要使用Ctrl+Shift+Enter执行。此公式中设置的高度为
10
在我看来,这里建议的一些公式有点像过度使用…..试试这个通常输入的公式
=SUMPRODUCT((B3:K3=D17)*(B4:K13“”)
或者这也会起到同样的作用
=总和((B3:K3=D17)*(B4:K13“”)
按CTRL+SHIFT+ENTER确认我将尝试并让您知道反馈。@Harun24小时它应该可以工作,我只是在我的工作表中键入了您的数据,并使用了此公式,它就工作了。如果您有问题,请告诉我。我可能会将公式中的
10
更改为行(B4:B13)
。这样,例如,如果在计数范围内插入了一行,则使用ROWS
将动态地将该值更新为11
。这是我不喜欢使用OFFSET
或其他类似的易失性函数的原因之一。如果您使用MATCH来识别正确的列,那么您可以使用Index来获取整个列,然后使用COUNTIF来计算非空白,即=COUNTIF(Index(B4:K13,0,MATCH(D17,B3:K3,0)),“”)
谢谢,这两个建议都是正确的!如果我是这张表的用户,我会将输入范围(D17中的笔)放在这张表的上方,这样我就不必担心高度。有趣的是,我一直认为当数组/矩阵相乘时,它们的大小必须相同。这是一个很好的信息。@ImaginaryHuman072889您可以将一个1*10的向量与一个10*10的矩阵相乘,得到另一个10*10的矩阵,然后SUMPRODUCT
只对单个10x10数组求和。这里可以使用SUM,但是你需要CSEYea,我刚刚从这篇文章中发现这是可能的,因此我使用了MMULT
和TRANSPOSE
。另外,我注意到你特别使用了“矩阵”和“数组”这两个词,尽管你在这两种情况下都指的是10x10大小。有区别吗?(或者这只是一个输入错误)@ImaginaryHuman072889-我想我在使用术语时有点草率-在Excel术语中,无论是B3:K3=D17
还是B4:K13“
return array——我刚才用vector和matrix表示其中一个数组是单列数组,另一个是多列数组。我已经测试了所有答案,发现所有答案都很有用。谢谢大家。我接受了巴里·胡迪尼(barry houdini)的《安德尔》(andwer),因为它简单易懂。