如何在指定列匹配动态值时统计两列中至少一列非空的行数?
问题
需要统计满足以下条件的行数:同一行中指定列包含特定字符串,且另外两列中至少有一列非空。
输入数据(Table1)
| Got | Location | Name | Coords 1 | Coords 2 | | TRUE | Fridge | Milk | | (5341, 3258) | | FALSE | Fridge | Egg | | | | FALSE | Fridge | Bread | (5356, 3128) | | | TRUE | Fridge | Cheese | | |
理想输出(Table2)
| Location | Total Got | Total There | Total With Coords | | Fridge | 2 | 4 | 2 |
其中「Total With Coords」为2,因为有两行的Coords 1或Coords 2非空。
已实现用=COUNTIFS(Table1!A:A, true,Table1!B:B,A2)统计已取走的物品数量,但尝试=COUNTIFS(Table1!D:D, <>"",Table1!B:B,A2)等公式统计非空行失败;=DCOUNTA、=QUERY等函数也无法实现需求;=ARRAYFORMULA(SUM(N(REGEXMATCH(Table1!D2:D, " "))))能统计单列非空数,但不知如何扩展至多列和添加位置条件。
解决方案
针对「Total With Coords」的统计需求,推荐以下几种可行公式:
方法1:数组公式直接统计
在Table2对应单元格(如C2)输入:
=ARRAYFORMULA(SUM(N((Table1!B:B=A2)*(Table1!D:D<>""+Table1!E:E<>""))))
逻辑说明:
Table1!B:B=A2:筛选出与当前位置(A2)匹配的行Table1!D:D<>""+Table1!E:E<>"":用逻辑或判断,只要Coords 1或Coords 2非空就返回1- 两者相乘后,仅同时满足位置匹配、至少一列非空的行会被计数,最终用
SUM累加总数
方法2:辅助列+COUNTIFS统计
若觉得数组公式复杂,可先添加辅助列(如Table1的F列),在F2输入:
=IF(OR(D2<>"",E2<>""),1,0)
下拉填充后,再用COUNTIFS统计:
=COUNTIFS(Table1!B:B,A2,Table1!F:F,1)
方法3:QUERY函数精准统计
修正QUERY的用法即可实现多条件统计,输入:
=QUERY(Table1!A:E,"SELECT COUNT(A) WHERE B='"&A2&"' AND (D<>'' OR E<>'') LABEL COUNT(A) ''",0)
逻辑说明:
WHERE B='"&A2&"':匹配指定的LocationAND (D<>'' OR E<>''):要求Coords 1或Coords 2非空COUNT(A)统计符合条件的行数,LABEL COUNT(A) ''用于去掉默认生成的表头
内容的提问来源于stack exchange,提问作者Oriana Neulinger
相关产品推荐
相关产品推荐

