使用数组公式收集数据的 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))}
我有一个包含缺陷类型的原始数据 (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))}