问题描述
我有一个包含多列的工作表,需要检查 TRUE
值或 "Y"
什么是最简单的方法来做到这一点。我使用 IF 函数进行了检查,它工作正常,但公式很长。我曾尝试使用 COUNTIF
公式,但无法让它发挥作用。
COUNTIF(W2:X2,"Y")+COUNTIF(Z2:AB2,"Y")>0,OR(Y2="TRUE",AC2="TRUE")
这是电子表格的链接 https://docs.google.com/spreadsheets/d/12k9usKsOgrOUhtW5WBvfY7WB5hbfnTMSPgXtrqcRFjM/edit?usp=sharing
如果任何 columns A-N
显示 Y
或 TRUE
,我希望列 O
返回任何值。
解决方法
你可以使用
=IF(OR(countif(A2:N2;"Y");countif(A2:N2;TRUE));"it works";"fail")
作为 countif()
返回许多正面或真实案例。使用 OR()
函数比较 "Y"
和 TRUE
值计数的状态将返回一个 TRUE
或 FALSE
值,它位于 {{1 }} 语句可以告诉您是否有任何列有 if()
或 Y
,或者所有列都没有。
失败案例
“工作”案例
,如果您想要一个数组解决方案(即,只使用一个公式处理所有行的解决方案),请删除示例表中 O 列的所有内容(包括标题),并将以下公式放入 O1:>
=ArrayFormula({"Header of Choice";IF(A2:A="",IF(ISERROR(REGEXEXTRACT(TRANSPOSE(QUERY(TRANSPOSE(A2:N)," ",COLUMNS(A1:N1))),"Y|TRUE")),"FAIL","PASS"))})
您可以根据需要在公式中更改标题。
公式的其余部分利用了 QUERY
函数允许多个标题(不仅仅是 0 或 1)这一事实。简而言之,所有每行数据都连接到 TRANSPOSE
d QUERY
列标题,然后 TRANSPOSE
d 回到行中(一种很酷的逐行连接方式);然后 REGEXEXTRACT
尝试在每一行的连接字符串中找到“Y”或“TRUE”。如果该尝试导致错误,则返回“FAIL”;如果成功,则返回“PASS”。
显然,您可以将“通过”和“失败”更改为您喜欢的任何内容。