Google Sheets Pivot Table 按 ID 合并空白

Google Sheets Pivot Table Merge Empty by ID

所以我知道空单元格最不适合生成数据透视表 tables 但是我有一个巨大的 csv 是这样生成的:

ID QTY ITEM DATE
800170 1 Donut 5/21/2022
800170 1 Bun
800170 1 Cake
800169 1 Sandwich 5/20/2022
800169 1 Cake
800169 2 Donut
800168 1 Donut 5/21/2022
800168 1 Cookie
800168 1 Tea
800167 1 Donut 5/22/2022
800167 1 Tea

这是从中生成的枢轴table。

我想知道是否有办法通过 ID“合并”日期,因为 ID 总是具有相同的日期?

期望输出:

这是我测试的 link google sheet: https://docs.google.com/spreadsheets/d/1Loe3dCe4jqj14ZD7alYkb0IhkysOpArk5ZORtIahjdk/edit?usp=sharing

尝试:

=ARRAYFORMULA(QUERY({A2:C, VLOOKUP(ROW(D2:D), IF(D2:D<>"", {ROW(D2:D), D2:D}), 2)}, 
 "select Col1,sum(Col2) where Col2>0 group by Col1 pivot Col4"))


或者如果你想要总数:

=ARRAYFORMULA({QUERY({A:C, VLOOKUP(ROW(D:D), IF(D:D<>"", {ROW(D:D), D:D}), 2)}, 
 "select Col1,sum(Col2) where Col2>0 group by Col1 pivot Col4"), 
 QUERY({A:B}, "select sum(Col2) where Col2>0 group by Col1 label sum(Col2)'Grand Total'"); 
 {"Grand Total", TRANSPOSE(MMULT(TRANSPOSE(QUERY(QUERY({A:C, 
 VLOOKUP(ROW(D:D), IF(D:D<>"", {ROW(D:D), D:D}), 2)}, 
 "select sum(Col2) where Col2>0 group by Col1 pivot Col4"), "offset 1", )*1),
 SEQUENCE(COUNTUNIQUE(A2:A), 1, 1,  ))), SUM(B:B)}})


或者如果你真的喜欢 pivot table 设计:

demo sheet

遗憾的是,Pivot table 没有根据 ID 合并数据的功能。您可以做的是填充原始数据的日期列。

我在这里创建了一个脚本,它将根据之前的值填充数据。

function onOpen() {
  var ui = SpreadsheetApp.getUi();
  ui.createMenu('Custom Menu')
      .addItem('Fill Dates', 'fillDates').addToUi()
}

function fillDates(){
  var sh = SpreadsheetApp.getActiveSpreadsheet();
  var ss = sh.getSheetByName("Sheet1");//Change this to your sheet name
  var dLastRow = ss.getRange("D"+(ss.getLastRow()+1)).getNextDataCell(SpreadsheetApp.Direction.UP).getRow();
  var startRow = 2;
  var dateCol = 4
  var range = ss.getRange(startRow, dateCol, dLastRow, 1);
  var data = range.getValues();
  var temp = '';
  data.forEach(date =>{
    if(date[0] != ''){
      temp = date[0];
    }else{
      date[0] = temp
    }
  })
  range.setValues(data)
}

转到 Apps 脚本、select Extensions > Apps 脚本 .复制粘贴上面的代码,保存脚本并刷新电子表格。该脚本将在您的电子表格中创建一个自定义菜单,您可以单击该菜单以 运行 该脚本。

演示:

输出:

如果您有任何问题或疑问,请告诉我。

参考文献: