【问题标题】:Google Sheets: Sum matching values across list of sheetsGoogle表格:对表格列表中的匹配值求和
【发布时间】:2020-12-31 23:47:52
【问题描述】:

我正在尝试整理一份投资跟踪表。对于概览页面,我想查询和组合来自每个帐户选项卡的数据,但我很难弄清楚如何实现这一点。

这是我的测试表的链接:https://docs.google.com/spreadsheets/d/14sZmxkM65ax9BKrkjinwOrOQPrS_xhqPPLs68Rggii4/edit

我尝试使用的公式位于“概览”选项卡的 J 列中。此公式适用于 Excel,但不适用于 Google 表格:

=IF(F2<>"",SUMPRODUCT(SUMIF(INDIRECT("'"&Accounts&"'!"&"$N$2:$N$1000"),F2,INDIRECT("'"&Accounts&"'!"&"$O$2:$O$1000"))),"")
  • 帐户是具有 4 个帐户选项卡名称的命名范围
  • 每个帐户选项卡上的 N 列都有股票名称
  • 每个帐户选项卡上的 O 列都有共享计数
  • “概览”选项卡上的 F 列包含要匹配的股票名称

如果我在 Excel 中运行相同的电子表格,则上述公式可以正常工作,并且从 4 个帐户中正确添加了共享计数:120/20/50/101。

在谷歌表格中,我知道 INDIRECT 不支持数组,因此它只显示第一个帐户的共享计数:100/20/0/0

所以我的问题是,是否有人可以告诉我如何修改 J 列中的公式以在 Google 表格中工作?

谢谢。

【问题讨论】:

    标签: google-sheets


    【解决方案1】:

    删除整个 J 列并使用它:

    =ARRAYFORMULA(IFNA(VLOOKUP(F2:F, QUERY(
     {Account1!N:O; Account2!N:O; Account3!N:O; Account4!N:O}, 
     "select Col1,sum(Col2) 
      where Col1 is not null 
      group by Col1"), 2, 0)))
    

    【讨论】:

    • 有没有办法将Account1/Account2/etc的具体使用替换为Accounts命名范围?我的目标是在添加/删除帐户时不需要修改工作表的其余部分。
    • @Gary 否,因为当您创建命名范围时,您无法将多个范围组合成一个命名范围。但是,您可以将每个范围包装到 iferror 中,例如:IFFERROR(Account1!N:O, {"",""}) - 无论工作表是否存在,这种方式都会起作用
    • Hrm,我还希望名称可以自定义。有没有办法通过 A 列中的名称引用公式中的工作表?即,如果我将 Account1 选项卡重命名为 MyAccount 并将 A2 更改为 MyAccount,您的公式可以以某种方式使用 A2 吗?即不必将公式从 Account1!N:O 更改为 MyAccount!N:O,而是 SOMETHING(A2)!N:O
    • @Gary 是的,应该是:INDIRECT(A2&amp;"!N:O")
    • 谢谢,成功了!我希望你不介意,但你能帮我解决一个额外的问题吗?此处的新链接:docs.google.com/spreadsheets/d/… 我尝试扩展相同的公式以适用于其他列,但它声称 N 列存在循环依赖关系,我不明白,因为引用的唯一数据在其他工作表中。
    猜你喜欢
    • 1970-01-01
    • 2019-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-29
    • 1970-01-01
    • 2023-02-03
    • 2022-11-26
    相关资源
    最近更新 更多