在 google 工作表中的每个值数组中查找范围(条件)内的值

Finding a value within a range(condition) in each array of values in google sheets

所以,我有一个数据集,其中每一行都包含一个范围为 0-600 的值数组,最终会延伸到 sheet 的末尾。 It looks something like this. 我试图找到 100 和 200 之间的值,然后将其显示在第一列中。目前我正在使用以下格式的 FILTER 函数:

=FILTER(H2:BI2, H2:BI2 > 100, H2:BI2 < 200)

这 returns 每行的结果都符合预期。但是,我想使用数组公式将其应用于我以这种格式执行的整个列:

=ARRAYFORMULA(FILTER(H2:BI, H2:BI > 100, H2:BI < 200))

但是,这不适用于错误消息“FILTER range must be a single row or a single column.”。解决这个问题的最佳方法是什么?提前致谢。

[编辑:我的数据是一组受控数据,其中只有一个值在该范围内。如果在极少数情况下出现两个值,可以忽略它或只 select 第一个。]

如果您可能有多个值满足条件(对于一行中唯一的一个它也适用),那么此公式将为您提供每行第一个值的列:

=ARRAYFORMULA(
  IFNA(INT(REGEXEXTRACT(
    TRANSPOSE(
      QUERY(
        TRANSPOSE(
          IF((H2:BI > 100) * (H2:BI < 200), H2:BI, "")
        ),
        ,
        COLUMNS(H2:BI)
      )
    ),
    "^\s*(\d+)"
  )))
)

UPD

如果你确定满足条件的值不超过一个,那么你也可以用这个公式:

=TRANSPOSE(
  SPLIT(
    TEXTJOIN(
      "",
      True,
      {
        ARRAYFORMULA(IF((H2:BI > 100) * (H2:BI < 200), H2:BI, "")) ,
        {
          TRANSPOSE(SPLIT(REPT(",-", ROWS(H2:BI) - 1), "-", True, True)); ""
        }
      }
    ),
    ",",
    True,
    False
  )
)

单元格中会有一个数字,或者如果行中没有大于 100 且 <200 的数字,单元格中会有 ""