我需要将一个Excel数据透视表复制到googlesheet中。假设您有一些字段,其中包含有关付款人的信息,而其他字段中则包含有关卖方的信息。所有字段都必须在“数据透视表”的“行”部分中。有人会知道一种将与买方相对应的字段(例如:买方名称,买方地址)互相放在下面,而与卖方相对应的字段也互相放在下面的方法吗?
我尝试了“分组依据”,但这似乎仅适用于相同字段的值。
以下是我创建的googlesheet的链接,其中显示了我想做的事情(sheet1),sheet2包含一些可用于该数据透视表的数据:https://docs.google.com/spreadsheets/d/1pJvlLsijsnzKbSvgLVYkGEzcA3MdpSJZIMYquy26dGM/edit?usp=sharing
答案 0 :(得分:0)
如果要使数据透视表如下所示:
最简单的方法是一种变通方法,这意味着您的初始数据看起来像这样:
代替:
可以使用Apps Script自动更改表格的布局。
这是一个示例代码,如何从工作表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());
}
}