根据指定列在组内的占比将某数分配到各行

例题描述

Excel文件book1.xlsx中有下图所示数据:

..

..

工作表“水费支出(3)”中有每年的漏水损失数量,现在想要把这个损失量分配到工作表“水费支出明细”中的漏水损失列中,分配原则是=漏水损失*月北控水表水量/全年月北控水表水量总和。

此题涉及读取Excel工作表数据、按条件变化分组、组内运算、Excel单元格填数等知识。

实现步骤

1、  编写脚本:

A
1=file("E:/work/book1.xlsx").xlsopen()
2=A1.xlsimport@t(;"水费支出明细")
3=A2.group@i(年度!=null)
4=A1.xlsimport@t(;"水费支出 (3)",2:7)
5=A3.run(y=~.年度/"年",a=A4.select@1(年度==y).'漏水损失(吨)',s=~.sum('月北控水表水量(吨)'),~.run('漏水损失(吨)'=string('月北控水表水量(吨)'*a/s,"#.00")))
6=A1.xlscell("F2","水费支出明细";A2.('漏水损失(吨)').concat("\n"))
7=file("E:/work/book2.xlsx").xlswrite(A1)

A1   打开book1.xlsx文件为Excel对象

A2   读出A1中工作表“水费支出明细”的数据,选项@t表示首行是列标题

A3   对A2中的数据按照年度不为空时分为一个新组,选项@i表示当条件参数为真时分一个新组,结果是每年的数据分在同一组

A4   读出A1中工作表“水费支出(3)”的第2-7行数据,选项@t表示首行是列标题

A5   循环A3中的各年份分组,变量y是本组所在年份,变量a是从A4中选出对应年份的漏水损失,变量s是本年度总的月北控水表水量,然后循环本年度所有记录,给漏水损失列赋值为:月北控水表水量*a/s,计算结果保留2位小数。

A6   把A2中的漏水损失列数据用\n连接成串,然后设置到A1的Excel对象的工作表“水费支出明细”的F2单元格。

A7   把A1的Excel对象保存到文件book2.xlsx

2、  运行程序,结束后就可以看到work目录中生成的book2.xlsx文件,打开后的结果如下图。

..

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值