我正在尝试编写一个函数来分析列中的“是”、“NA”和“否”。如果所有行中都有“是”或“NA”,则提交状态将为“是”(可能所有行都是“是”,但有 1 个 NA,则提交状态必须为“是”)。但是,如果任何行中有“否”,则提交状态必须为“否”这是我所拥有的:
=IF(COUNTIFS(H4:H14,{"是","NA"})=COUNTA(H4:H14),"是","否")
只有当所有行都为“是”时,它才会显示“是”。当某一行显示为“NA”,而其他所有行都为“是”时,提交状态区域会显示“否”,这是错误的。所有行中的“否”都显示提交状态为“否”,这是正确的。有人能帮我弄清楚这段代码吗?
答案1
我认为有三种方法可以实现这一目标。
根据 cybernetic.nomad 的评论,如果您关注问题陈述“...如果任何行中有“否”...”,我们希望计算其中包含“否”的单元格。
=IF(COUNTIF(H4:H14,"否")=0,"是","否")
另一方面,如果您想从另一个方向关注它 - “......如果所有行中都有“是”或“NA”......”,那么我们要计算“是”的单元格并将其添加到“NA”单元格的数量。
=IF(COUNTIFS(H4:H14,"是")+COUNTIFS(H4:H14,"NA")=COUNTA(H4:H14),"是","否")
而且,如果我们想使用{...}
语法,就像您在最初尝试时一样,我们只需要使用构造SUM(...)
,因为COUNTIFS
具有该{"Yes","NA"}
方法的函数返回一个包含两个值的数组(列表中的每个可能匹配一个值),所以我们需要将它们加起来。
=IF(SUM(COUNTIFS(H4:H14,{"是","NA"}))=COUNTA(H4:H14),"是","否")
(第三种方法只是第二种方法的重述。)
警告
前两种方法可能存在重大差异。要确定哪种方法最适合您,您必须确定如果有任何值超出您的示例“是”、“否”和“NA”的范围,您希望得到什么结果。特别是,如果任何行具有未列出的值(例如“xxx”),第一种方法将导致Yes
,而第二种和第三种方法将导致No
。
您的要求不明确,尽管在这种情况下这对您来说可能不是什么问题,但最好不要把任何事情留给机会。