Если вы хотите, чтобы сводная таблица выглядела следующим образом:
Самый простой способ добиться этого - это обходной путь, которыйподразумевает, что ваши исходные данные выглядят так:
вместо:
Автоматическое изменение макета таблицы может быть достигнуто с помощью скрипта 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());
}
}