在 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 的数字,单元格中会有 ""
。
所以,我有一个数据集,其中每一行都包含一个范围为 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 的数字,单元格中会有 ""
。