使用数组公式收集数据的 Countifs

Countifs with array formula to collect data

我有一个包含缺陷类型的原始数据 (EC,VC,BC,NC)。

第一类缺陷计算(EC,VC,BC)。 例如,如果我想收集 EC 缺陷,我将收集所有包含 EC=0 的行,如果 EC 在同一行中两次得分降至 0,则仅在此原始中计为 1 EC。 VC 和 BC 也是如此。

第二种缺陷计算(NC) 与上述相同的计算,但如果 NC 缺陷在同一行上重复出现,则会将其相加。

我有 headers 包含 VC,EC,BC,NC 在包含分数的每一列上方。

这里我需要什么来计算每个包含缺陷的原料。

我为 VC,EC,BC 尝试了以下公式。

=ARRAYFORMULA(IF(ROW(E2:E)=2,"EC",IF(LEN(E2:E)=0,IFERROR(1/0),IF(COUNTIFS($E:$BH,"EC",$E:$BH,0)>=1,1,0))))

公式在没有数组公式的情况下仍然有效,但每次更新数据时都很难拖动。

此外,针对 NC 尝试了以下方法。

=ARRAYFORMULA(IF(ROW(H2:H)=2,"NC",IF(LEN(H2:H)=0,IFERROR(1/0),COUNTIFS($E:$BH,"NC",$E:$BH,0))))

示例 Sheet:Test Sheet

={"EC"; ARRAYFORMULA(IF(LEN(TRIM(FLATTEN(QUERY(TRANSPOSE(IF(FILTER(
 INDIRECT("E3:"&ADDRESS(MAX((E:Z<>"")*(ROW(A:A))), COLUMNS(1:1))), 
 E1:1="EC")=0, 1, )),,9^9))))>0, 1, 0))}

={"VC"; ARRAYFORMULA(IF(LEN(TRIM(FLATTEN(QUERY(TRANSPOSE(IF(FILTER(
 INDIRECT("E3:"&ADDRESS(MAX((E:Z<>"")*(ROW(A:A))), COLUMNS(1:1))), 
 E1:1="VC")=0, 1, )),,9^9))))>0, 1, 0))}

={"BC"; ARRAYFORMULA(IF(LEN(TRIM(FLATTEN(QUERY(TRANSPOSE(IF(FILTER(
 INDIRECT("E3:"&ADDRESS(MAX((E:Z<>"")*(ROW(A:A))), COLUMNS(1:1))), 
 E1:1="BC")=0, 1, )),,9^9))))>0, 1, 0))}

={"NC"; ARRAYFORMULA(MMULT(IF(FILTER(
 INDIRECT("E3:"&ADDRESS(MAX((E:Z<>"")*(ROW(A:A))), COLUMNS(1:1))), 
 E1:1="NC")=0, 1, 0), SEQUENCE(COUNTIF(E1:1, "NC"))^0))}