以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]关于Excel报表调用excel函数的问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=104985)

--  作者:1452565001
--  发布时间:2017/8/9 16:10:00
--  [求助]关于Excel报表调用excel函数的问题

我想使用excel报表功能分别统计每个月的人数,金额,和费率,同一个名字算同一个人,想用excel函数进行统计,逻辑如下:

人数:计算相同的名字有n个,每个都记为1/n 人数就等于所有1/n的和

金额:计算所有金额列的和

费率:以金额为权,计算费率的加权平均数。

实例上传了,按照自己的想法做了简单的报表,但是运行不了。请老师指点。

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.rar


--  作者:有点甜
--  发布时间:2017/8/9 16:49:00
--  

模板,这样写

 

[!数量1] [!金额1]

 

你生成之前,先执行代码

 

Dim filter As String = "时间 >= #2017-07-01# and 时间 < #2017-08-01#"
vars("数量1") = DataTables("表a").GetValues("姓名", filter).count
vars("金额1") = DataTables("表a").compute("sum(金额)", filter)

 

 


--  作者:1452565001
--  发布时间:2017/8/9 17:12:00
--  
老师,不知道是不是我的浏览器显示问题,这个模板没看懂。
图片点击可在新窗口打开查看此主题相关图片如下:微信图片_20170809171118.png
图片点击可在新窗口打开查看

--  作者:有点甜
--  发布时间:2017/8/9 17:25:00
--  

你excel单元格直接写 [!数量1] 就行了。

 

你生成报表之前,先用代码给 数量1 赋值

 

Dim filter As String = "时间 >= #2017-07-01# and 时间 < #2017-08-01#"
vars("数量1") = DataTables("表a").GetValues("姓名", filter).count

 

 


--  作者:1452565001
--  发布时间:2017/8/9 17:26:00
--  
奥,好的 谢谢老师
--  作者:1452565001
--  发布时间:2017/8/9 17:30:00
--  
那能否计算加权费率呢?
--  作者:有点甜
--  发布时间:2017/8/9 18:01:00
--  
以下是引用1452565001在2017/8/9 17:30:00的发言:
那能否计算加权费率呢?

 

Dim filter As String = "时间 >= #2017-07-01# and 时间 < #2017-08-01#"
Dim drs = DataTables("表a").Select(filter)
Dim sum1 As Double = 0
Dim sum2 As Double = 0
For Each dr As DataRow In drs
    sum1 += dr("金额") * dr("费率")
    sum2 += dr("金额")
Next

Dim avg = sum1 / sum2

msgbox(avg)


--  作者:1452565001
--  发布时间:2017/8/9 18:03:00
--  
谢谢指点!
--  作者:wfkbabro
--  发布时间:2021/9/7 22:31:00
--  
收藏。