Google sheets formula 使用范围时无法比较查询公式中的日期列

Google sheets formula 使用范围时无法比较查询公式中的日期列,google-sheets-formula,Google Sheets Formula,我有一个从多个工作表中获取数据的公式。除了日期,其他东西都很好用 =查询({ iferror(间接的(如果(E1,一月!A:I,,),{,,,,,,,,,,,,,,,,,,,,,,,,); iferror(间接的(如果(F1,“二月!A:I”,”),{“,”,“,”,“,”,“,”,”,”); iferror(间接的(如果(G1,三月!A:I,,),{,,,,,,,,,,,,,,,,,,,,,); iferror(间接的(如果(H1,April!A:I,,),{,,,,,,,,,,,,,,,,

我有一个从多个工作表中获取数据的公式。除了日期,其他东西都很好用

=查询({
iferror(间接的(如果(E1,一月!A:I,,),{,,,,,,,,,,,,,,,,,,,,,,,,);
iferror(间接的(如果(F1,“二月!A:I”,”),{“,”,“,”,“,”,“,”,”,”);
iferror(间接的(如果(G1,三月!A:I,,),{,,,,,,,,,,,,,,,,,,,,,);
iferror(间接的(如果(H1,April!A:I,,),{,,,,,,,,,,,,,,,,,,,);
间接(if(I1,“May!A:I”,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,);
iferror(间接的(如果(J1,June!A:I,,),{,,,,,,,,,,,,,,,,,,,);
iferror(间接的(如果(E3,“七月!A:I”,),{“,”,“,”,“,”,“,”,”,“,”,”);
iferror(间接的(if(F3,八月!A:I,,,),{,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,);
iferror(间接的(如果(G3,“九月!A:I”,),{“,”,“,”,“,”,“,”,”,“,”,”);
iferror(间接的(如果(H3,十月!A:I,,),{,,,,,,,,,,,,,,,,,,,,,,);
iferror(间接的(if(I3,十一月!A:I,,),{,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,);
iferror(间接(如果(J1,“十二月!A:I”,”),{“,”,“,”,“,”,“,”,”,“}),“选择*其中Col2”和Col1=日期“2020-01-02”)
1月份的工作表有数据,但我仍然无法显示查询结果

更新:某些月报可能存在,也可能不存在,即使E1 Fq G1等中选择了true


2月份的表格缺失,如果在F1中选择true,则不应出现错误,因此我使用间接公式与iferror一起使用,实际上我不知道为什么有时它无法比较日期。此外,我不明白为什么我不能在查询中嵌套iferror,并使用花括号处理范围

最后,我决定制作一个小表格,在这里我检查表格是否存在(独立于带有勾选框的表格)

如果两个条件都满足,查询将使用范围。如果不是,则使用一行空白单元格

我的解决方案是:

我使用的公式如下所示:

 =QUERY({
if(E1+M2=2,{January!A1:I},{"","","","","","","","",""});
if(F1+M3=2,{Febryary!A1:I},{"","","","","","","","",""});
if(G1+M4=2,{March!A1:I},{"","","","","","","","",""});
if(H1+M5=2,{April!A1:I},{"","","","","","","","",""});
if(I1+M6=2,{May!A1:I},{"","","","","","","","",""});
if(J1+M7=2,{June!A1:I},{"","","","","","","","",""});
if(E3+M8=2,{July!A1:I},{"","","","","","","","",""});
if(F3+M9=2,{August!A1:I},{"","","","","","","","",""});
if(G3+M10=2,{September!A1:I},{"","","","","","","","",""});
if(H3+M11=2,{October!A1:I},{"","","","","","","","",""});
if(I3+M12=2,{November!A1:I},{"","","","","","","","",""});
if(J3+M13=2,{December!A1:I},{"","","","","","","","",""})}, "Select *  where Col1 < date '2020-12-02' and Col1 is not null" )
=查询({
如果(E1+M2=2,{一月!A1:I},{,,,,,,,,,,,,,,,,,,,,,,,,,,);
如果(F1+M3=2,{Febryary!A1:I},{,,,,,,,,,,,,,,,,,,,,,,,,);
如果(G1+M4=2,{March!A1:I},{,,,,,,,,,,,,,,,,,,,,,,,,);
如果(H1+M5=2,{April!A1:I},{,,,,,,,,,,,,,,,,,,,,,,,);
如果(I1+M6=2,{May!A1:I},{,,,,,,,,,,,,,,,,,,,,,});
如果(J1+M7=2,{June!A1:I},{,,,,,,,,,,,,,,,,,,,,,,,,);
如果(E3+M8=2,{July!A1:I},{,,,,,,,,,,,,,,,,,,,,,,,,);
如果(F3+M9=2,{August!A1:I},{,,,,,,,,,,,,,,,,,});
如果(G3+M10=2,{septer!A1:I},{,'','','','','','','','',''等);
如果(H3+M11=2,{10月!A1:I},{,,,,,,,,,,,,,,,,,,,,,,,,);
如果(I3+M12=2,{11月!A1:I},{,,,,,,,,,,,,,,,,,,,,,});
如果(J3+M13=2,{December!A1:I},{“”、“”、“”、“”、“”、“”、“”、“”、“”、“”)},“选择*其中Col1

M列包含测试表(如果存在)。

请尝试以下公式:

=QUERY({
iferror(indirect(if(E1,"January!A2:I","")),{"","","","","","","","",""});
iferror(indirect(if(F1,"February!A2:I","")),{"","","","","","","","",""});
iferror(indirect(if(G1,"March!A2:I","")),{"","","","","","","","",""});
iferror(indirect(if(H1,"April!A2:I","")),{"","","","","","","","",""});
iferror(indirect(if(I1,"May!A2:I","")),{"","","","","","","","",""});
iferror(indirect(if(J1,"June!A2:I","")),{"","","","","","","","",""});
iferror(indirect(if(E3,"July!A2:I","")),{"","","","","","","","",""});
iferror(indirect(if(F3,"August!A2:I","")),{"","","","","","","","",""});
iferror(indirect(if(G3,"September!A2:I","")),{"","","","","","","","",""});
iferror(indirect(if(H3,"October!A2:I","")),{"","","","","","","","",""});
iferror(indirect(if(I3,"November!A2:I","")),{"","","","","","","","",""});
iferror(indirect(if(J1,"December!A2:I","")),{"","","","","","","","",""})}, "Select *  where Col2 <>'' AND (Col1 = date '2020-01-02' or Col1 = "&value("2020-01-02") &")" )
=查询({
iferror(间接的(如果(E1,一月!A2:I,,),{,,,,,,,,,,,,,,,,,,,,);
iferror(间接的(如果(F1,“二月!A2:I”,”),{“,”,“,”,”,“,”,”,“,”,”);
iferror(间接的(如果(G1,三月!A2:I,,),{,,,,,,,,,,,,,,,,,,,,);
iferror(间接的(如果(H1,April!A2:I,,),{,,,,,,,,,,,,,,,,,,,,,);
间接的(如果(I1,May!A2:I;
iferror(间接的(如果(J1,June!A2:I,,),{,,,,,,,,,,,,,,,,,,,,,);
iferror(间接的(如果(E3,“七月!A2:I”,”),{,,,,,,,,,,,,,,,,,,,,);
iferror(间接的(if(F3,八月!A2:I,,),{,,,,,,,,,,,,,,,,,,,,,,,,);
iferror(间接的(如果(G3,“九月!A2:I”,),{“,”,“,”,“,”,“,”,”,“,”,”);
iferror(间接的(如果(H3,十月!A2:I,,),{,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,);
iferror(间接的(如果(I3,十一月!A2:I,,),{,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,);
iferror(间接(如果(J1,“十二月!A2:I”,”),{“,”,“,”,“,”,“,”,“,”,“}”),“选择*其中Col2”和(Col1=日期“2020-01-02”或Col1=“&value”(“2020-01-02”)&”)
对原配方的改进:

  • 使用不带标题的数据进行查询。查询公式不能同时处理多种格式
  • 在查询语句中使用
    条件。查询将所有值转换为数字或日期,具体取决于更频繁的值。因此,您需要同时选中:
    Select*where Col2''和(Col1=date'2020-01-02'或Col1=43832)

  • 不要假设2月、3月等的表格存在。当它们不存在时,不使用间接命令将导致错误。因此,有必要采取间接措施。这个解决方案没有帮助。谢谢你的帮助。如果你能用间接法解决这个问题,我真的很感激。请找到我的更新。我不知道是什么原因导致了数据格式的问题。我只发现,如果你用{}的范围代替正常范围,它就可以工作了。我可以看得更远。如果有一个解决方案允许从查询中排除现有月份,我会的。仍然不起作用,请您将工作链接表与您的答案共享给我。您声明了,我看到您有一个表,当工作表存在时为真,当工作表不存在时为假。这不正确,工作表可能存在,也可能不存在,真表示结果必须显示,假表示结果不能显示。我完全重写了我的答案。请看它是否适用于您超级解释。谢谢你,麦克斯
    =QUERY({
    iferror(indirect(if(E1,"January!A2:I","")),{"","","","","","","","",""});
    iferror(indirect(if(F1,"February!A2:I","")),{"","","","","","","","",""});
    iferror(indirect(if(G1,"March!A2:I","")),{"","","","","","","","",""});
    iferror(indirect(if(H1,"April!A2:I","")),{"","","","","","","","",""});
    iferror(indirect(if(I1,"May!A2:I","")),{"","","","","","","","",""});
    iferror(indirect(if(J1,"June!A2:I","")),{"","","","","","","","",""});
    iferror(indirect(if(E3,"July!A2:I","")),{"","","","","","","","",""});
    iferror(indirect(if(F3,"August!A2:I","")),{"","","","","","","","",""});
    iferror(indirect(if(G3,"September!A2:I","")),{"","","","","","","","",""});
    iferror(indirect(if(H3,"October!A2:I","")),{"","","","","","","","",""});
    iferror(indirect(if(I3,"November!A2:I","")),{"","","","","","","","",""});
    iferror(indirect(if(J1,"December!A2:I","")),{"","","","","","","","",""})}, "Select *  where Col2 <>'' AND (Col1 = date '2020-01-02' or Col1 = "&value("2020-01-02") &")" )