我有这个调查表,它在3行中给出了答案分数(3个调查表)。我需要找到具有Q1 >=30
或Q2 >12
或Q3 <=33
的那些。我一直在搜寻和尝试解决方案,但通过手动计数进行比较时失败了。
请参见屏幕截图(第AN / AT / BC
行将作为Q1 / Q2 / Q3的答案)
在BD/BE
行上,您可以看到我的手动计数,这是一个PITA,容易出错。
该公式帮助我计算包括Q1+Q2+Q3
在内的所有值:
=COUNTIFS(AN4:AN147;">=30";AT4:AT147;">=12";BC4:BC147;">=0"; BC4:BC147;"<=33")
我需要的公式是查找其中AN或AT或BC具有给定值的实例。对于AN来说> = 30,对于AT来说>> 12,对于BC来说<= 33。例如,如果一个响应者有31(!),10、40,那么,如果一个响应者有31(!),15(!),41,则应将他计为“ 1”(或只是计算)。那么如果一位响应者有25),10、41,则他也应计为“ 1”);那么就不应该算他。
这是一种称为Maslach倦怠量表的倦怠综合症量表,我要在这里得到的是那些处于倦怠风险中的人(必须更改这3个子问卷中的1或2个,但不能像那些个人那样全部3个<患有倦怠综合症
以下是根据要求使用markdown生成器的示例:
| AN | AT | BC | | |
|---- |---- |---- |--- |--- |
| 14 | 11 | 41 | | |
| 14 | 4 | 43 | | |
| 50 | 9 | 41 | | |
| 38 | 16 | 20 | | |
编辑:无法正确显示它,嗯。 edit2:知道了
答案 0 :(得分:1)
=SUMPRODUCT(N(((AN>=30)+(AT>=12)+((BC>=0)*(BC<=33)))={1,2}))
其中AN
,BC
和AT
是引用明显对象的命名范围。
在您的原始公式中,您还测试了BC>0
,所以我在上面包括了它。
但是,如果不需要该测试,则公式可以简化为:
=SUMPRODUCT(N(((AN>=30)+(AT>=12)+(BC<=33))={1,2}))
“公式评估”工具可以帮助您了解正在发生的事情。
并且在下面的屏幕快照中,不需要byRow
列。只是为了证明每行的测试结果,以供学习。
{TRUE,FALSE}
数组。
TRUE=1
和FALSE=0
中。 {0,1,2,3}
的数组,具体取决于每行中有多少个匹配项。1
或2
,并再次返回另一个{TRUE, FALSE}
数组。N
函数将{TRUE,FALSE}
更改为{1,0}
,SUMPRODUCT
将所有内容加起来。SUM
函数,但是您必须记住,对于数组公式,您必须在按住ctrl-shift
的同时按下enter
来确认公式,以确认公式。正确的结果。答案 1 :(得分:0)
这是一种实现方式:
=SUMPRODUCT( ( ( (AN4:AN7>=30)+(AT4:AT7>12)+(BC4:BC7<=33) )=1)
+( ( (AN4:AN7>=30)+(AT4:AT7>12)+(BC4:BC7<=33) )=2) )
@Ron Rosenfeld的公式是完成同一件事的一种更短,更优雅的方法。
无论如何,如果您考虑一些虚拟数据(如下面的屏幕快照所示,该屏幕快照分别显示满足0、1、2和3个条件的行),则我的公式如下:
第4行:
(FALSE+FALSE+FALSE = 1) => 0+0+0 = 1 => 0=1 => FALSE
(FALSE+FALSE+FALSE = 2) => 0+0+0 = 2 => 0=2 => FALSE
FALSE+FALSE => 0
第5行:
(TRUE +FALSE+FALSE = 1) => 1+0+0 = 1 => 1=1 => TRUE
(FALSE+FALSE+FALSE = 2) => 0+0+0 = 2 => 0=2 => FALSE
TRUE+FALSE => 1
第6行:
(TRUE +TRUE +FALSE = 1) => 1+1+0 = 1 => 2=1 => FALSE
(TRUE +TRUE +FALSE = 2) => 1+1+0 = 2 => 2=2 => TRUE
FALSE+TRUE => 1
第7行:
(TRUE +TRUE +TRUE = 1) => 1+1+1 = 1 => 3=1 => FALSE
(TRUE +TRUE +TRUE = 2) => 1+1+1 = 2 => 3=2 => FALSE
FALSE+FALSE => 0
Sumproduct将四个总数相加。
还有另一种方式(也许比实际用途更有趣,但不涉及伪数组公式):
=COUNTIF(AN4:AN7,">=30")+COUNTIF(AT4:AT7,">=12")+COUNTIF(BC4:BC7,"<=33")
-COUNTIFS(AN4:AN7,">=30",AT4:AT7,">=12")-COUNTIFS(AN4:AN7,">=30",BC4:BC7,"<=33")-COUNTIFS(AN4:AN7,">=12",BC4:BC7,"<=33")
公式的第一行只是将满足一个条件的单个问题加起来。但是,如果满足两个条件,我们将需要重复计算。因此,我们必须为每个对减去一个。如果满足三个条件,该怎么办?我们最终会减去三倍,这使我们回到零,所以没关系。
查看维恩图可能会有所帮助:
注意,有一些证据here证明,对于这种类型的问题,甚至多个sumif可能比sumproducts还要快,但只有当您有 lot 时才相关。数据。