ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 9794|回复: 15

[求助] 数据多次分组统计能否使用数据透视表完成?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2011-1-29 14:41 | 显示全部楼层 |阅读模式
一个简单表格,要对销售额数据进行统计,但是必须要首先进行三次分组后才能合计. 对我附上的表格解释如下:
表格共有四个字段: 产品销售日期        剩余有效期(月)        佣金比率        销售额 要求对销售额分类统计.

第一次分组:按照销售日期在全部数据内分组.
对A列 产品销售日期全部数据进行升序排序,然后由最下面的日期向上以6个月为一组分组: 比如由A75 2011年2月1日向上6个月应该是到2010年8月2日止,由于数据只到2010年8月5日,所以从A75-A34形成组1; A33-A10形成组2; A9-A2形成组3

第二次分组: 按照剩余有效期在组1/2/3内进行分组:
例如:在组1内A75-A34 见对B列进行升序排序, 然后由最下面最大的剩余有效期向上以6个月为一组分组: 比如由A75 36向上6个月到A44 30形成组1-1; A33-A10形成组1-2; 以此类推到其它组内分组

第三次分组: 按照佣金比例在组1-1, 1-2,2-1,2-2,2-3内进行分组:
例如:在组1-1内A75-A44 对C列进行升序排序, 然后由最下面最大的比例向上以2%为步进为一组分组: 比如由A75 6.2%向上2%月到A61 4.2%形成组1-1-1; A60-A44形成组1-1-2; 一次类推到其它组内分组 (我得附件中没有完成全部的此步组内分组

第四步:合计每个最终组的销售额.如组1-1-1 合计D61-D75

能用数据透视表完成这个分类统计吗?

Testing .rar

43.94 KB, 下载次数: 43

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-1-29 21:34 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
是不是太复杂了,没有知道吗?

TA的精华主题

TA的得分主题

发表于 2011-1-30 02:06 | 显示全部楼层
  1. SELECT *, Format(Int((DateDiff('m',[产品销售日期],(SELECT Max(产品销售日期) FROM [数据源$])))/6)+1,'00') & Format(Int(((SELECT Max([剩余有效期(月)]) FROM [数据源$])-[剩余有效期(月)])/6)+1,'00') & Format(Int(((SELECT Max(佣金比率) FROM [数据源$])-[佣金比率])/2)+1,'00') AS 分组类别
  2. FROM [数据源$] where 产品销售日期 is not null
复制代码
123.gif

TA的精华主题

TA的得分主题

发表于 2011-1-30 02:10 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
分组类别中,每两位数代表一个分组,当然你可以给它重新命名个合适的名字

Testing .rar (46.68 KB, 下载次数: 21)

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-1-30 07:41 | 显示全部楼层
十分谢谢楼上,让我来学习学习是如何操作的.另外,如何能知道每个分类组别中究竟有多少条记录呢?

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-1-30 11:23 | 显示全部楼层
请教助教:

我把源数据重新整理核对了一下,然后用你的方法对比手工做的结果,有些差异.我在附件中标出来了, 我想是函数计算的问题. 另外,SQL语句部份没有读懂,能否给翻译一下. 组别名称能否在函数中设置自己动生成我希望的名称,例如CAAA1.

非常感谢.

Testing1.rar

19.02 KB, 下载次数: 10

TA的精华主题

TA的得分主题

发表于 2011-1-30 13:34 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
原帖由 xfwxiao 于 2011-1-30 11:23 发表
请教助教:

我把源数据重新整理核对了一下,然后用你的方法对比手工做的结果,有些差异.我在附件中标出来了, 我想是函数计算的问题. 另外,SQL语句部份没有读懂,能否给翻译一下. 组别名称能否在函数中设置自己动生成我 ...



这个问题我是这样理解的,2%为一个分组,你说的手工分组中那两条因为这个分组中最大值是6.2,那么这个分组应该是<=6.2、>4.2为一个组,<=4.2、>2.2为一个组,<=2.2、>0.2为一个组,;如果一个组既包括6.2,又包括4.2,那下一个分组咋算呢?

要知道每个分类组别中究竟有多少条记录,直接再拖一个字段进数据区,设置属性为计数即可。

TA的精华主题

TA的得分主题

发表于 2011-1-30 13:43 | 显示全部楼层
自动生成名称是可以的,但需要一个规则。

TA的精华主题

TA的得分主题

发表于 2011-1-30 13:52 | 显示全部楼层
SELECT Max(产品销售日期) FROM [数据源$]      '是取得“产品销售日期”的最大值
DateDiff('m',[产品销售日期],(SELECT Max(产品销售日期) FROM [数据源$]))      '取得相差的月份数
然后除以6用int取整进行分组,Format相当于text函数,是对取得的分组数据进行规范的。考虑到有可能每组超过9个,所以用'00'定义了两位数。

其它类推

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-1-30 22:11 | 显示全部楼层
谢谢助教?
请问
1: 每个产品销售日期与最大的销售日期进行比较,然后差值向下取整除以6 是不是就 可以执行 把 销售日期按照由大到小每6个月为一个组合? 那么6后面那个+1 是什么意思呢? 另外,这个函数分组能正确识别比如 2011/02/01 - 2010/08/02 在一组 而不包含 2010/08/01 这一天在内吗? 因为2010/08/01超过了6个月的限制.

2. 关于销售佣金比率: 6.2-4.2 在一组,下一组就得从剩余的数据中 的最大值 4.15开始向下2% 到2.15 来组合. 这个规则是否比较难以实现?

3. 销售佣金的分组规则实际上和其它的两个分组规则是一样的, 当上一级分组完成后,下一级分组都是从剩余数据中的最大值开始来重新确定组的边界. 这就是我最头痛的地方, 不知助教有没有什么好的办法?
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-30 11:30 , Processed in 0.043573 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表