利用JSA对WPS表格进行分类汇总

某会计师事务所2024年度年报审计实际收到款项如下,现在需要按照收款部门进行分类汇总,如下图所示:

像这类问题,想必大家在Excel VBA中使用字典来解决已经非常熟练了,那么在WPS中其实也是一样,因为都是一样的原理。使用JSA理解起来更容易,直接使用键值对的概念。
测试代码:
function test() {let sht = ActiveSheet;let data = sht.Range("A1").CurrentRegion.Value2;let map = new Map();for (let i = 1; i < data.length; i++) {let dept = data[i][1];let amount = data[i][2];if (map.has(dept)) {map.set(dept, map.get(dept) + amount);} else {map.set(dept, amount);}}let result = [["收款部门", "收款总金额"]];map.forEach((value, key) => {result.push([key, value]);});let targetRange = sht.Range("E1").Resize(result.length, 2);targetRange.Value2 = result;targetRange.Borders.Item(xlEdgeBottom).LineStyle = xlContinuous;console.log("汇总完成!");}
如果您嫌上面的代码有点多的话,还有一种更简洁的代码,使用了slice和reduce,理解起来可能要难一点吧。
function test2() {let sht = ActiveSheet;let data = sht.Range("A1").CurrentRegion.Value2.slice(1);let summary = data.reduce((acc, curr) => {acc[curr[1]] = (acc[curr[1]] || 0) + curr[2];return acc;}, {});let result = [["收款部门", "收款总金额"], ...Object.entries(summary)];sht.Range("E1").Resize(result.length, 2).Value2 = result;}
今天的分享就到这儿啦,非常感谢您对“Python SQL审天下”公众号的关注和点赞。如果您觉得我的公众号能给您带来一丝丝的收获,请多多转发给您的朋友圈,让更多的人看到并了解。也许您不经意间的点赞和转发,会给他人带来独特的体验和感受。
夜雨聆风
