【问题标题】:Merging mismatched row size data from different sheets合并来自不同工作表的不匹配的行大小数据
【发布时间】:2021-02-22 02:43:40
【问题描述】:

浏览了互联网。 提供样品表 here。 我有两张表,一张购买表和一张出售表。

包含三列的“购买”表:

ID    Purchase Date    Total
 4    12/6/2020        $100.00
 3    12/7/2020        $50.00
 2    3/1/2020         $25.00

我的第二张表是“已售出”表有三列:

ID    Sold Date         Total
 3    12/7/2020         $200.00

Sheet 3 上的所需输出 应如下所示:

Quarter    Purchase Total    Sold Total
2020-Q4    $150.00           $200.00
2020-Q1    $25.00            $0.00

使用命名范围表 3,我可以单独执行这些操作:

=ARRAYFORMULA({query({YEAR(Purchases_PurchaseDate) & "-Q" & ROUNDUP(month(Purchases_PurchaseDate)/3,0), Purchases},"Select (Col1), sum(Col2) where (Col1) is not null group by (Col1) order by (Col1) DESC label (Col1) 'Quarter', sum(Col2) 'Purchase Total'")})

还有几列:

=ARRAYFORMULA({query({YEAR(Sold_SoldDate) & "-Q" & ROUNDUP(month(Sold_SoldDate)/3,0), Sold},"Select (Col1), sum(Col2) where (Col1) is not null group by (Col1) order by (Col1) DESC label (Col1) 'Quarter', sum(Col2) 'Sold Total'")})

我不关心命名范围,无论是产生所需输出或组合两个不会导致行大小不匹配的查询的最简单方式。请指教,

【问题讨论】:

  • 我可以想象如何解决这个问题。但是,仅基于您的帖子,仍有太多未知数。在这里为您提供帮助的最有效的方法是,如果您共享指向示例电子表格的链接(例如,包含您在帖子中显示/解释的所有工作表和数据的链接。如果您选择共享这样的链接,请务必在创建链接时将“共享”权限设置为“知道链接的任何人...”和“编辑者”。
  • 您好,请告知 - 我已添加样本表:docs.google.com/spreadsheets/d/…
  • 在我们尝试重新发明轮子之前,看看 player0 的更新解决方案是否适合您。

标签: arrays google-sheets google-sheets-formula vlookup array-formulas


【解决方案1】:

我使用与 player0 不同的公式添加了一个新工作表(“Erik 帮助”)。你会在 A2 中找到:

=QUERY({FILTER({YEAR(Purchases!B2:B) & "-Q" & VLOOKUP(MONTH(Purchases!B2:B), {1, 1; 4, 2; 7, 3; 10, 4}, 2, TRUE), Purchases!C2:C, Purchases!C2:C^0, IF(ROW(Purchases!A2:A), {0, 0, 0},)}, Purchases!B2:B<>""); FILTER({YEAR(Sold!B2:B) & "-Q" & VLOOKUP(MONTH(Sold!B2:B), {1, 1; 4, 2; 7, 3; 10, 4}, 2, TRUE), IF(ROW(Sold!A2:A), {0, 0},), Sold!C2:D, Sold!D2:D^0}, Sold!B2:B<>"")}, "Select Col1, SUM(Col2), SUM(Col3), SUM(Col4), SUM(Col6), SUM(Col5) GROUP BY Col1 ORDER BY Col1 DESC LABEL Col1 'Quarter', SUM(Col2) 'Tot. Purch $', SUM(Col3) 'Tot. Number Purch.', SUM(Col4) 'Tot. Sold $', SUM(Col5) 'Tot. Fees', SUM(Col6) 'Tot. Number Sold'")

我还在第 1 行(A1 中的公式)中放置了一个累积总计公式,以及一些标准格式和自定义 CF 规则,用于逐行分组。

【讨论】:

  • 这非常有用。对于其他好奇的人来说,Erik 创建的附加选项卡要干净得多。对于任何感兴趣的人,如果您需要在第二个过滤器中添加额外的列,其中您有超过 4 列,而不是 Sold!C2:D,请使用 YourSheet!D2:F,例如,并更新第一个 IF(ROW (YourSheet!A2:A, {0,0,0}
【解决方案2】:

使用:

=ARRAYFORMULA({A7:C12, IFNA(VLOOKUP(A7:A12, E7:H12, {2, 3, 4}, 0))})

更新:

=ARRAYFORMULA({query({YEAR(Purchases_PurchaseDate) & "-Q" & ROUNDUP(month(Purchases_PurchaseDate)/3,0), Purchases},"Select (Col1), sum(Col4), count(Col4) where (Col4) is not null group by (Col1) order by (Col1) DESC label (Col1) 'Quarter', sum(Col4) 'Total Purchased', count(Col4) 'Number of Items Purchased'"), IFNA(VLOOKUP(query({YEAR(Purchases_PurchaseDate) & "-Q" & ROUNDUP(month(Purchases_PurchaseDate)/3,0), Purchases},"Select (Col1), sum(Col4), count(Col4) where (Col4) is not null group by (Col1) order by (Col1) DESC label (Col1) 'Quarter', sum(Col4) 'Total Purchased', count(Col4) 'Number of Items Purchased'"), query({YEAR(Sold_SoldDate) & "-Q" & ROUNDUP(month(Sold_SoldDate)/3,0), Sold},"Select (Col1), sum(Col4), sum(Col5), count(Col4) where (Col4) is not null group by (Col1) order by (Col1) DESC label (Col1) 'Quarter', sum(Col4) 'Total Sold', sum(Col5) 'Total Fees', count(Col4) 'Number of Items Sold'"), {2, 3, 4}, 0))})

【讨论】:

  • 您的解决方案使用同一张表上已查询输出的内容。我正在尝试仅从采购和销售表创建输出。非常感谢,
  • @fuzzie 答案已更新。使用第二个特效。看你的表
  • 谢谢你。使用更新的查询我无法产生结果。第一个查询返回第一个工作表的输出,但第二个查询只会产生第一列,因此忽略了第二个查询选择中的其他列。
猜你喜欢
  • 2022-10-13
  • 1970-01-01
  • 2016-11-26
  • 1970-01-01
  • 1970-01-01
  • 2020-12-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多