代码之家  ›  专栏  ›  技术社区  ›  GowlDesign

使用arrayformula、query和importrange从另一个电子表格中提取数据

  •  0
  • GowlDesign  · 技术社区  · 7 月前

    我创建了两个电子表格:

    • the firs t、 由两个选项卡组成的列表列出了记录的值(值选项卡)和要达到的目标(BDD选项卡中的值1和值2)。
    • the second 将使我能够设置指标

    对于指标,我导入了所需的值(列A到F)。我希望能够在G列和H列中显示第一个文件中存在的目标。

    所以我写了这些公式(在G2和H2中):

    ={"Value 1";arrayformula(SI($A2:$A="";"";QUERY(IMPORTRANGE("https://docs.google.com/spreadsheets/d/1tePHlgV-FBTRB9_rqFm6oen3jVwlrnI1woaDhjeV8BE";"BDD!A2:F");"SELECT Col5 WHERE Col1 ='"&$B$2:$B&"' AND Col2='"&$C$2:$C&"' AND Col3 ='"&$D$2:$D&"' AND Col4='"&$E$2:$E&"'")))}
    ={"Value 1";arrayformula(SI($A2:$A="";"";QUERY(IMPORTRANGE("https://docs.google.com/spreadsheets/d/1tePHlgV-FBTRB9_rqFm6oen3jVwlrnI1woaDhjeV8BE";"BDD!A2:F");"SELECT Col6 WHERE Col1 ='"&$B$2:$B&"' AND Col2='"&$C$2:$C&"' AND Col3 ='"&$D$2:$D&"' AND Col4='"&$E$2:$E&"'")))}
    

    然而,结果并不是我所期望的。对于男性来说,这是有效的,但对于女性来说则不然。值1的预期结果为2.6,值2为2.9。

    实现目标的最佳方案是什么?由于我创建的arrayformula、query importrange组合不起作用,我陷入了困境。谢谢你的帮助

    1 回复  |  直到 7 月前
        1
  •  2
  •   rockinfreakshow    7 月前

    以下是您可以测试的一种方法:

    =vstack({"Value 1"\"Value 2"};byrow(B2:E;lambda(Σ;if(indirect("A"&row(Σ))="";;index(vlookup(join(;Σ);
       byrow(importrange("1tePHlgV-FBTRB9_rqFm6oen3jVwlrnI1woaDhjeV8BE";"BDD!A2:F");lambda(x;{join(;choosecols(x;1;2;3;4))\choosecols(x;5;6)}));{2\3};))))))
    

    enter image description here

    • 我用过 vlookup 在这里,但上述相同的lambda方法也可以适用于您的原始 query 公式也是

    查询方法更新

    =vstack({"Value 1"\"Value 2"};
     map(B2:B;C2:C;D2:D;E2:E;lambda(b;c;d;e;if(indirect("A"&row(b))="";;
     query(importrange("1tePHlgV-FBTRB9_rqFm6oen3jVwlrnI1woaDhjeV8BE";"BDD!A2:F");"select Col5,Col6 where Col1 ='"&b&"' AND Col2='"&c&"' AND Col3 ='"&d&"' AND Col4='"&e&"'")))))
    

    enter image description here