希望有一种更简洁的方法,根据多个条件按行获取布尔数组

希望有一种更简洁的方法,根据多个条件按行获取布尔数组

任务很简单。

如果所有列值(例如 C 列、E:I 列)都不为零,并且某一列(例如 B 列)中没有特定文本,则不返回该行的任何数据。

结果应以数组形式返回,以供进一步评估。

插图

我知道如何通过将以下代码应用到 J 列来完成:

=IF(
  --(INDIRECT("B1:B"&MATCH("End",$A:$A,0)-1)="Show me")+
  --(NOT(ISNUMBER(INDIRECT("C1:C"&MATCH("End",$A:$A,0)-1))))+
  --(NOT(ISNUMBER(INDIRECT("E1:E"&MATCH("End",$A:$A,0)-1))))+
  --(NOT(ISNUMBER(INDIRECT("F1:F"&MATCH("End",$A:$A,0)-1))))+
  --(NOT(ISNUMBER(INDIRECT("G1:G"&MATCH("End",$A:$A,0)-1))))+
  --(NOT(ISNUMBER(INDIRECT("H1:H"&MATCH("End",$A:$A,0)-1))))+
  --(NOT(ISNUMBER(INDIRECT("I1:I"&MATCH("End",$A:$A,0)-1))))+
  --(INDIRECT("C1:C"&MATCH("End",$A:$A,0)-1)<>0)+
  --(INDIRECT("E1:E"&MATCH("End",$A:$A,0)-1)<>0)+
  --(INDIRECT("F1:F"&MATCH("End",$A:$A,0)-1)<>0)+
  --(INDIRECT("G1:G"&MATCH("End",$A:$A,0)-1)<>0)+
  --(INDIRECT("H1:H"&MATCH("End",$A:$A,0)-1)<>0)+
  --(INDIRECT("I1:I"&MATCH("End",$A:$A,0)-1)<>0),
"Have data","No data")

然而,这个公式非常笨拙且缓慢。

由于 Excel 较旧,因此无法使用“Let”来缩短。

我希望有其他更清洁的方法来解决这个问题。

答案1

此公式仅在范围内的每一列都包含数字TRUE时才返回B1 = "Show me"C1, E1:I10

=IF(AND(B1<>"Show me",
        ISNUMBER(C1),
        ISNUMBER(E1:I1),
        SUM(C1, E1:I1)=0),
    "No Data",
    "Have Data"
)

Table Version table version

相关内容