ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 比较复杂,详情见附件

[复制链接]

TA的精华主题

TA的得分主题

发表于 2010-12-11 15:31 | 显示全部楼层 |阅读模式
问题好像比较麻烦,不知用透视表能不能解决,先谢过再求答案

砼 - 副件.rar

15.12 KB, 下载次数: 21

TA的精华主题

TA的得分主题

发表于 2010-12-11 16:12 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

回复 1楼 xzk235 的帖子

建议:
1.论坛有免费的数据透视表培训班,有兴趣可以参加
2.问题描述过多,搞不清想要的是什么,请模拟一份想要的结果

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-12-11 17:02 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

回复 2楼 zhangjimfu 的帖子

最终目的就是按月分类统计R7,R28等列的数据,如现在要统计2010-11-26至2010-12-25日的抗压数据,其中R7的数据对应的是2010-11-19至2010-12-18的成型日期,R28数据对应的是2010-10-29至2010-11-27的成型日期
现在的主要问题是要把现有透视表中的成型日期用抗压日期来表示。
如成型日期为2010-9-5日,则他对应的R7数据要在数据透视表的2010-9-12日上,R28天数据要在2010-10-3日上

好像越描述越复杂了
至于日期从上月26日至本月25日这个时间段,实在不行还可以手动组合

[ 本帖最后由 xzk235 于 2010-12-11 17:04 编辑 ]

TA的精华主题

TA的得分主题

发表于 2010-12-11 16:35 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
sql语句应该可以解决第一个问题,就是语句得老长了

TA的精华主题

TA的得分主题

发表于 2010-12-11 17:44 | 显示全部楼层
select 工程部位,桩号,高程,试件编号,标号,试件尺寸,成型日期+7 AS 时间,R7 as 数据,'R7' as 分类 from [总表$] union all

select 工程部位,桩号,高程,试件编号,标号,试件尺寸,成型日期+14,R14,'R14' from [总表$] union all

select 工程部位,桩号,高程,试件编号,标号,试件尺寸,成型日期+28,R28,'R28' from [总表$] union all

select 工程部位,桩号,高程,试件编号,标号,试件尺寸,成型日期+90,R90,'R90' from [总表$] union all

select 工程部位,桩号,高程,试件编号,标号,试件尺寸,成型日期+180,R180,'R180' from [总表$] union all

select 工程部位,桩号,高程,试件编号,标号,试件尺寸,成型日期+360,R360,'R360' from [总表$] union all

select 工程部位,桩号,高程,试件编号,标号,试件尺寸,成型日期+28,p28,'P28' from [总表$] union all

select 工程部位,桩号,高程,试件编号,标号,试件尺寸,成型日期+90,p90,'P90' from [总表$]
辅助列是datedif函数
666.rar (47.28 KB, 下载次数: 13)

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-12-12 09:52 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

回复 5楼 mn860429 的帖子

先谢过了再下载研究,研究完了再恶补SQL

mn兄,现在还有点问题,我数据留空的地方是不参与计算的,并不是0,我尝试了一下把连接数据直接输出为透视表,里面的数据统计有问题,通过透视表查看原始数据,那些数据全是文本格式的,不知是不是这个原因

还有个数据连接的入门问题,用本文件的数据也是用绝对路径的,文件移动或改名的时候比较麻烦,有没有好的解决方法?

[ 本帖最后由 xzk235 于 2010-12-12 10:44 编辑 ]

TA的精华主题

TA的得分主题

发表于 2010-12-12 12:52 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
原帖由 xzk235 于 2010-12-12 09:52 发表
先谢过了再下载研究,研究完了再恶补SQL

mn兄,现在还有点问题,我数据留空的地方是不参与计算的,并不是0,我尝试了一下把连接数据直接输出为透视表,里面的数据统计有问题,通过透视表查看原始数据,那些数据全 ...


直接SQL提取数据源进行透视:

select 试件编号,标号,试件尺寸,成型日期+7 AS 试压时间,'7' as 砼龄,(month(成型日期+7)+iif(day(成型日期+7)>25,1,0)) as 月份,R7*1 as 强度 from [总表$] where R7 is not null  union all  select 试件编号,标号,试件尺寸,成型日期+14 AS 试压时间,'14' as 砼龄,(month(成型日期+14)+iif(day(成型日期+14)>25,1,0)) as 月份,R14*1 as 强度 from [总表$] where R14 is not null  union all  select 试件编号,标号,试件尺寸,成型日期+28 AS 试压时间,'28' as 砼龄,(month(成型日期+28)+iif(day(成型日期+28)>25,1,0)) as 月份,R28*1 as 强度 from [总表$] where R28 is not null  union all select 试件编号,标号,试件尺寸,成型日期+90 AS 试压时间,'90' as 砼龄,(month(成型日期+90)+iif(day(成型日期+90)>25,1,0)) as 月份,R90*1 as 强度 from [总表$] where R90 is not null  union all select 试件编号,标号,试件尺寸,成型日期+180 AS 试压时间,'180' as 砼龄,(month(成型日期+180)+iif(day(成型日期+180)>25,1,0)) as 月份,R180*1 as 强度 from [总表$] where R180 is not null  union all select 试件编号,标号,试件尺寸,成型日期+360 AS 试压时间,'360' as 砼龄,(month(成型日期+360)+iif(day(成型日期+360)>25,1,0)) as 月份,R360*1 as 强度 from [总表$] where R360 is not null  union all select 试件编号,标号,试件尺寸,成型日期+28 AS 试压时间,'28' as 砼龄,(month(成型日期+28)+iif(day(成型日期+28)>25,1,0)) as 月份,P28*1 as 强度 from [总表$] where P28 is not null  union all select 试件编号,标号,试件尺寸,成型日期+90 AS 试压时间,'90' as 砼龄,(month(成型日期+90)+iif(day(成型日期+90)>25,1,0)) as 月份,P90*1 as 强度 from [总表$] where P90 is not null

            红色部分的代码存在BUG,因为其生成的值可能为13,而月份的值只能是1~12,楼下已修正此BUG。

[ 本帖最后由 cbtaja 于 2010-12-12 17:00 编辑 ]

砼.rar

22.24 KB, 下载次数: 3

TA的精华主题

TA的得分主题

发表于 2010-12-12 16:46 | 显示全部楼层
更新,去除7楼的SQL代码可能生成“13月份”的BUG。
新的SQL语句:

select 试件编号,标号,试件尺寸,成型日期+7 AS 试压时间,'7' as 砼龄,dateadd("d",iif(day(成型日期+7)>25,6,0),成型日期+7) as 月份,R7*1 as 强度 from [总表$] where R7 is not null  union all  select 试件编号,标号,试件尺寸,成型日期+14 AS 试压时间,'14' as 砼龄,dateadd("d",iif(day(成型日期+14)>25,6,0),成型日期+14) as 月份,R14*1 as 强度 from [总表$] where R14 is not null  union all  select 试件编号,标号,试件尺寸,成型日期+28 AS 试压时间,'28' as 砼龄,dateadd("d",iif(day(成型日期+28)>25,6,0),成型日期+28) as 月份,R28*1 as 强度 from [总表$] where R28 is not null  union all select 试件编号,标号,试件尺寸,成型日期+90 AS 试压时间,'90' as 砼龄,dateadd("d",iif(day(成型日期+90)>25,6,0),成型日期+90) as 月份,R90*1 as 强度 from [总表$] where R90 is not null  union all select 试件编号,标号,试件尺寸,成型日期+180 AS 试压时间,'180' as 砼龄,dateadd("d",iif(day(成型日期+180)>25,6,0),成型日期+180) as 月份,R180*1 as 强度 from [总表$] where R180 is not null  union all select 试件编号,标号,试件尺寸,成型日期+360 AS 试压时间,'360' as 砼龄,dateadd("d",iif(day(成型日期+360)>25,6,0),成型日期+360) as 月份,R360*1 as 强度 from [总表$] where R360 is not null  union all select 试件编号,标号,试件尺寸,成型日期+28 AS 试压时间,'28' as 砼龄,dateadd("d",iif(day(成型日期+28)>25,6,0),成型日期+28) as 月份,P28*1 as 强度 from [总表$] where P28 is not null  union all select 试件编号,标号,试件尺寸,成型日期+90 AS 试压时间,'90' as 砼龄,dateadd("d",iif(day(成型日期+90)>25,6,0),成型日期+90) as 月份,P90*1 as 强度 from [总表$] where P90 is not null

砼.rar

24.51 KB, 下载次数: 27

TA的精华主题

TA的得分主题

发表于 2010-12-12 16:52 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-12-12 19:05 | 显示全部楼层
感谢各位大哥,功能实现解决了,不过现在经常碰到连接不上数据,有点郁闷了,时不时的提示打不开
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

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

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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