Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google sheets 在google工作表中的每个值数组中查找范围(条件)内的值_Google Sheets_Filter_Google Sheets Formula_Array Formulas - Fatal编程技术网

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

Google sheets 在google工作表中的每个值数组中查找范围(条件)内的值,google-sheets,filter,google-sheets-formula,array-formulas,Google Sheets,Filter,Google Sheets Formula,Array Formulas,因此,我有一个数据集,其中每一行包含一个从0到600的值数组,该数组最终将扩展到工作表的末尾。 我试图找到100到200之间的值,然后在第一列中显示它。目前,我正在使用以下格式的筛选函数: =过滤器(H2:BI2,H2:BI2>100,H2:BI2100,H2:BI100)*(H2:BI100)*(H2:BI200)*(H2:BI400。这非常有效。如果有,我可以使用OR语句,这样我就可以将所有语句都计算到一个单元格中?@Max.当然,只需要使用+而不是OR,因为它在数组FORMULA中不起作用

因此,我有一个数据集,其中每一行包含一个从0到600的值数组,该数组最终将扩展到工作表的末尾。 我试图找到100到200之间的值,然后在第一列中显示它。目前,我正在使用以下格式的筛选函数:

=过滤器(H2:BI2,H2:BI2>100,H2:BI2<200)
这将返回每行的预期结果。但是,我想使用一个数组公式将其应用于整个列,我是这样做的:

=阵列公式(过滤器(H2:BI,H2:BI>100,H2:BI<200))
但是,这不适用于错误消息“筛选器范围必须是单行或单列”。解决这个问题的最好办法是什么?提前谢谢


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

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

=数组公式(
IFNA(INT(REGEXEXTRACT(
转置(
质疑(
转置(
如果((H2:BI>100)*(H2:BI<200),H2:BI,“”)
),
,
色谱柱(H2:BI)
)
),
“^\s*(\d+)”
)))
)

UPD

如果确定满足条件的值不超过一个,则也可以使用以下公式:

=转置(
分裂(
文本连接(
"",
是的,
{
阵列公式(如果((H2:BI>100)*(H2:BI<200),H2:BI,“”)),
{
转置(拆分(报告(“,-”,行(H2:BI)-1),“-”,真,真));“
}
}
),
",",
是的,
假的
)
)

如果一行中没有大于100的数字,并且
=FILTER()
根据定义是一个数组公式,则单元格中将有一个数字,或者单元格将有
,因此将其包含在
ARRAYFORMULA()
中将不起作用。您确定每行只有一个值符合条件吗?
FILTER
不能用作数组公式,只能调用一次,而不是每次迭代。“我试图找到100到200之间的值,然后将其显示在第一列”是什么意思?是否需要满足条件的第一个值?还是你都需要?您的第一个公式为您提供了行,如果只有一行,则可能只有一行,否则它将占用多个列。很抱歉,忘记提到,传入的数据是受控的,并且将只输出一个在该范围内的值。如果在极少数情况下有多个行,则可以忽略该行或仅允许其显示错误。我会再次感谢你的帮助,不过如果你不介意的话,我还有一个问题要问。在另一个单元格中,我想计算400个值的数量。我正试图修改您给我的解决方案,但遇到了一些问题。@元素的最大行计数是完全不同的解决方案。这里是关于“200-300”:
=MMULT(数组公式(--((H2:BI>200)*(H2:BI<300))、序列(列(H2:BI)、1、1、0))
。对于“400”-到
H2:BI>400
。这非常有效。如果有,我可以使用OR语句,这样我就可以将所有语句都计算到一个单元格中?@Max.当然,只需要使用+而不是OR,因为它在
数组FORMULA
中不起作用。试试这个:
=MMULT(数组公式(--((H2:BI>200)*(H2:BI<300))+(H2:BI<100)+(H2:BI>400)),序列(列(H2:BI),1,1,0))
工作得很好。再次感谢