google-apps-script - 谷歌工作表数据透视表 - 按来自不同字段的不同行分组
问题描述
我需要将一个 excel 数据透视表复制到 googlesheet 中。假设您有包含付款人信息的字段和其他包含卖方信息的字段。所有字段都必须位于数据透视表的“行”部分。有谁知道如何将与买方相对应的字段(例如:买方姓名、买方地址)和与卖方相对应的字段相互放在一起?
我已经尝试过 Group By 但这似乎只适用于同一字段的值。
这是我创建的 googlesheet 的链接,显示了我想要做什么(sheet1),而 sheet2 有一些数据可用于此数据透视表:https ://docs.google.com/spreadsheets/d/1pJvlLsijsnzKbSvgLVYkGEzcA3MdpSJZIMYquy26dGM/edit?usp=分享
解决方案
如果您想要使数据透视表如下所示:
实现它的最简单方法是一种解决方法,这意味着您的初始数据如下所示:
代替:
可以使用 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());
}
}
推荐阅读
- kubernetes - Kubernetes:pod“kube-dns-86f4d74b45-whjqd”中的容器“kubedns”正在等待启动:尝试提取图像但失败
- javascript - Typescript数组推送方法无法捕获数组的元组类型
- php - 如何从symfony的公共文件夹中下载pdf文件
- c++ - 如何在 Visual Studio Code 中创建自定义项目模板
- latex - 在 LaTex 中结合 longtable、booktabs 和 xcolor,布局问题
- c - 如何访问可变参数打印函数的变量值?
- java - 如何使用 ENUM 列出角色?
- python - 将列表与 numpy 浮点数与常规浮点数进行比较
- python - df.groupby(.pdGrouper(freq='D') ).idxmax 抛出 ValueError
- html - SASS 网格重复出现在屏幕外