Сводная таблица листа Google - группировка по разным строкам из разных полей - PullRequest
0 голосов
/ 25 июня 2019

Мне нужно воспроизвести сводную таблицу Excel в googlesheet.Скажем, у вас есть поля с информацией о плательщике и другие поля с информацией о продавце.Все поля должны находиться в разделе «Строки» сводной таблицы.Кто-нибудь знает способ разместить поля, соответствующие покупателю (например, имя покупателя, адрес покупателя) друг под другом, а также поля, соответствующие продавцу друг под другом?

Я пробовал Group By, нопохоже, это работает только со значениями того же поля.

Вот ссылка на созданную мной таблицу googlesheet, показывающую, что я хочу сделать (sheet1), и sheet2 имеет некоторые данные, которые нужно попробовать для этой сводной таблицы: https://docs.google.com/spreadsheets/d/1pJvlLsijsnzKbSvgLVYkGEzcA3MdpSJZIMYquy26dGM/edit?usp=sharing

1 Ответ

0 голосов
/ 26 июня 2019

Если вы хотите, чтобы сводная таблица выглядела следующим образом:

enter image description here

Самый простой способ добиться этого - это обходной путь, которыйподразумевает, что ваши исходные данные выглядят так:

enter image description here

вместо:

enter image description here

Автоматическое изменение макета таблицы может быть достигнуто с помощью скрипта Apps.Вот пример кода, как вы можете создать из ваших исходных данных на листе originalData представление «Удобно для сводной таблицы» на листе newLayout:

  function myFunction() {
  var originalData=SpreadsheetApp.getActiveSpreadsheet().getSheetByName('originalData');
  var newLayout=SpreadsheetApp.getActiveSpreadsheet().getSheetByName('newLayout');
  var limit=originalData.getLastRow();
  var BuyerName=originalData.getRange('A2:A'+limit);
  var BuyerPayer=originalData.getRange('B2:B'+limit);
  var SellerName=originalData.getRange('C2:C'+limit);
  var SellerPayer=originalData.getRange('D2:D'+limit);
  var header=newLayout.getRange('A1:C1');
  var transaction1=newLayout.getRange('A2:A'+limit);
  var transaction2=newLayout.getRange('A'+(limit+1)+':A'+(2*limit-1)); 
  var buyer1=newLayout.getRange('B2:B'+limit); 
  var buyer2=newLayout.getRange('B'+(limit+1)+':B'+(2*limit-1)); 
  var seller1=newLayout.getRange('C2:C'+limit); 
  var seller2=newLayout.getRange('C'+(limit+1)+':C'+(2*limit-1));  
  header.setValues([['Transaction', 'Buyer', 'Seller']]);   
  for(var i=1;i<limit;i++)
  {
    transaction1.getCell(i,1).setValue(i);
    transaction2.getCell(i,1).setValue(i);
    buyer1.getCell(i,1).setValue(BuyerName.getCell(i,1).getValue());
    buyer2.getCell(i,1).setValue(BuyerPayer.getCell(i,1).getValue());
    seller1.getCell(i,1).setValue(SellerName.getCell(i,1).getValue());
    seller2.getCell(i,1).setValue(SellerPayer.getCell(i,1).getValue());
  }  
}
...