Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.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 Sheets_Google Query Language - Fatal编程技术网

Google sheets 在多个(连续范围)条件上选择和位置

Google sheets 在多个(连续范围)条件上选择和位置,google-sheets,google-query-language,Google Sheets,Google Query Language,我正在为我的工作表寻找一个SQL解决方案,它在一行中查找28列,如果该行中有任何非空值,则检索它 目前,我可以用这个可怕的公式得到我想要的东西: QUERY(SomeOtherSheet!A85:BA,"select A,B,C,O,P,Q,R,S,T,U,V,W,X,Y,Z where (O>=0 OR P>=0 OR Q>=0 OR R>=0 OR S>=0 OR T>=0 OR U>=0 OR V>=0 OR W>=0 OR X>

我正在为我的工作表寻找一个SQL解决方案,它在一行中查找28列,如果该行中有任何非空值,则检索它

目前,我可以用这个可怕的公式得到我想要的东西:

QUERY(SomeOtherSheet!A85:BA,"select A,B,C,O,P,Q,R,S,T,U,V,W,X,Y,Z where (O>=0 OR P>=0 OR Q>=0 OR R>=0 OR S>=0 OR T>=0 OR U>=0 OR V>=0 OR W>=0 OR X>=0 OR Y>=0 OR Z>=0) ",1)
只需说O-Z的范围不完全是28长,但它足以展示我在本例中所寻找的内容

问题)有没有更好的方法在连续的列范围内实现这种查询? 特别是在我的例子中,O-AQ的范围


我想我可以在不同的单元格中动态地串在一起。但我不想…

我已经研究出如何用尽可能少的静态幻数动态连接字符串:

首先,一个单元格包含:

=ARRAY_CONSTRAIN(ArrayFormula((IF((COLUMN(Lifetime!N$8:$8)+64)>CODE("Z"),"A"&CHAR(MOD(COLUMN(Lifetime!N$8:$8),26)+64),""&CHAR(COLUMN(Lifetime!N$8:$8)+64)))),1,28)
这为我们提供了以下阵列:

N,O,P,Q,R,S,T,U,V,W,X,Y,Z,AA,AB,AC,AD,AE,AF,AG,AH,AI,AJ,AK,AL,AM,AN,AO
此数组可以轻松地用于查询的Select部分。 我已经允许自己自由地不计算将是B*的单元格,因为我的个人数据表无法到达那里。
Array\u constraint()
列参数允许在将来需要时快速更改为不同大小的数组

其次,为所需的where子句提供一个简单的
textjoin()
+
regexreplace()

=REGEXREPLACE(TEXTJOIN(",",FALSE,A119:AB119),",",">=0 OR ")&">=0"
这将生成where子句所需的字符串:

N>=0 OR O>=0 OR P>=0 OR Q>=0 OR R>=0 OR S>=0 OR T>=0 OR U>=0 OR V>=0 OR W>=0 OR X>=0 OR Y>=0 OR Z>=0 OR AA>=0 OR AB>=0 OR AC>=0 OR AD>=0 OR AE>=0 OR AF>=0 OR AG>=0 OR AH>=0 OR AI>=0 OR AJ>=0 OR AK>=0 OR AL>=0 OR AM>=0 OR AN>=0 OR AO>=0
最终产品:

=ARRAY_CONSTRAIN(QUERY(Lifetime!A85:BA,"select A,B,C,"&120&" where ("&A121&")",1),105,20)
或作为一个班轮:

=REGEXREPLACE(TEXTJOIN(",",FALSE,ARRAY_CONSTRAIN(ArrayFormula((IF((COLUMN(Lifetime!N$8:$8)+64)>CODE("Z"),"A"&CHAR(MOD(COLUMN(Lifetime!N$8:$8),26)+64),""&CHAR(COLUMN(Lifetime!N$8:$8)+64)))),1,28)),",",">=0 OR ")&">=0"

我已经研究出如何用尽可能少的静态幻数动态连接字符串:

首先,一个单元格包含:

=ARRAY_CONSTRAIN(ArrayFormula((IF((COLUMN(Lifetime!N$8:$8)+64)>CODE("Z"),"A"&CHAR(MOD(COLUMN(Lifetime!N$8:$8),26)+64),""&CHAR(COLUMN(Lifetime!N$8:$8)+64)))),1,28)
这为我们提供了以下阵列:

N,O,P,Q,R,S,T,U,V,W,X,Y,Z,AA,AB,AC,AD,AE,AF,AG,AH,AI,AJ,AK,AL,AM,AN,AO
此数组可以轻松地用于查询的Select部分。 我已经允许自己自由地不计算将是B*的单元格,因为我的个人数据表无法到达那里。
Array\u constraint()
列参数允许在将来需要时快速更改为不同大小的数组

其次,为所需的where子句提供一个简单的
textjoin()
+
regexreplace()

=REGEXREPLACE(TEXTJOIN(",",FALSE,A119:AB119),",",">=0 OR ")&">=0"
这将生成where子句所需的字符串:

N>=0 OR O>=0 OR P>=0 OR Q>=0 OR R>=0 OR S>=0 OR T>=0 OR U>=0 OR V>=0 OR W>=0 OR X>=0 OR Y>=0 OR Z>=0 OR AA>=0 OR AB>=0 OR AC>=0 OR AD>=0 OR AE>=0 OR AF>=0 OR AG>=0 OR AH>=0 OR AI>=0 OR AJ>=0 OR AK>=0 OR AL>=0 OR AM>=0 OR AN>=0 OR AO>=0
最终产品:

=ARRAY_CONSTRAIN(QUERY(Lifetime!A85:BA,"select A,B,C,"&120&" where ("&A121&")",1),105,20)
或作为一个班轮:

=REGEXREPLACE(TEXTJOIN(",",FALSE,ARRAY_CONSTRAIN(ArrayFormula((IF((COLUMN(Lifetime!N$8:$8)+64)>CODE("Z"),"A"&CHAR(MOD(COLUMN(Lifetime!N$8:$8),26)+64),""&CHAR(COLUMN(Lifetime!N$8:$8)+64)))),1,28)),",",">=0 OR ")&">=0"

我知道你已经回答了。但将此作为备选方案提交:

对于Select

  =ARRAYFORMULA(JOIN(",",CHAR(ROW(65:90)),"A"&CHAR(ROW(65:90))))
对于以下位置或部分:

    =ARRAYFORMULA(JOIN(">=0 OR ", CHAR(Row(65:90)),"A"&CHAR(ROW(65:90))))&">=0"
要更改起始零件和结束零件,请更改行号起始零件和结束零件:


我知道OP已经回答了。但将此作为备选方案提交:

对于Select

  =ARRAYFORMULA(JOIN(",",CHAR(ROW(65:90)),"A"&CHAR(ROW(65:90))))
对于以下位置或部分:

    =ARRAYFORMULA(JOIN(">=0 OR ", CHAR(Row(65:90)),"A"&CHAR(ROW(65:90))))&">=0"
要更改起始零件和结束零件,请更改行号起始零件和结束零件:


请尝试将范围转换为数组:

QUERY({SomeOtherSheet!A85:BA},“选择Col1、Col2、Col3等”)

我总是使用这种方法,通过索引搜索查询中的列,例如查找名为“Name”的列:

=match(“Name”,SomeOtherSheet!A85:BA85,0)


更新。要组合查询的
部分,请执行以下操作:

=“where Col”&JOIN(“>=0或Col”),数组形式(列(O1:Z1))&“>=0”

结果是:

“其中Col15>=0或Col16>=0或Col17>=0或Col18>=0或Col19>=0或Col20>=0或Col21>=0或Col23>=0或Col24>=0或Col25>=0或Col26>=0”

如果将在范围
O1:Z1
内粘贴新列,则此公式将进行调整。在实际项目中,按点查找范围很有用:起始单元格、最后一个单元格,然后使用
间接

=“where Col”&JOIN(“>=0或Col”),数组形式(列(间接(范围))&“>=0”


其中
range
是字符串为“O1:Z1”的范围的名称,“O1”和“Z1”通过其列名或ID找到。

请尝试将范围转换为数组:

QUERY({SomeOtherSheet!A85:BA},“选择Col1、Col2、Col3等”)

我总是使用这种方法,通过索引搜索查询中的列,例如查找名为“Name”的列:

=match(“Name”,SomeOtherSheet!A85:BA85,0)


更新。要组合查询的
部分,请执行以下操作:

=“where Col”&JOIN(“>=0或Col”),数组形式(列(O1:Z1))&“>=0”

结果是:

“其中Col15>=0或Col16>=0或Col17>=0或Col18>=0或Col19>=0或Col20>=0或Col21>=0或Col23>=0或Col24>=0或Col25>=0或Col26>=0”

如果将在范围
O1:Z1
内粘贴新列,则此公式将进行调整。在实际项目中,按点查找范围很有用:起始单元格、最后一个单元格,然后使用
间接

=“where Col”&JOIN(“>=0或Col”),数组形式(列(间接(范围))&“>=0”


其中
range
是带有字符串“O1:Z1”的范围名称,“O1”和“Z1”是通过它们的列名或ID找到的。

我认为除了字符串化文本之外没有其他方法together@pnuts这不完全是我一直在寻找的,但已经激发了一个想法,可能会导致一个真正的动态答案!如果我在别人回答之前就完成了,我会在这里发帖。我认为除了把文本串起来,没有别的办法了together@pnuts这不完全是我一直在寻找的,但已经激发了一个想法,可能会导致一个真正的动态答案!如果我在其他人回答之前完成了,我会在这里发布>我想我可以在不同的单元格中动态地串在一起,以满足cols的要求。但我不想。。我确实想出了这样的主意。。但是你说没有不同的单元格…
=JOIN(“>=0或“,”ARRAYFORMULA(CHAR(ROW(A65:A90)))
=ARRAYFORMULA(“A”&JOIN(“A”,CHAR(ROW(65:90))))
几乎完美!如果您有办法将两者结合起来,从而在整个范围内创建
=或
,这可能是一个不太复杂的解决方案,请提交答案。检查一下。>我想我可以在不同的单元格中动态地串在一起,以满足cols的要求。但我不想。。我确实想出了这样的主意。。但是