ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 求一个归类的统计问题

[复制链接]

TA的精华主题

TA的得分主题

发表于 2011-5-29 11:56 | 显示全部楼层 |阅读模式
希望哪位大侠帮忙把第一张表格归类统计成第二张中想要的结果,谢谢大侠了,具体见附件

问题.rar

3.16 KB, 下载次数: 26

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-5-29 12:11 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
其实很简单,但我就是转不过那个弯,希望哪位老师出手帮忙下,谢谢

TA的精华主题

TA的得分主题

发表于 2011-5-29 12:17 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
  1. =SUMPRODUCT(N(问题!$B$2:$B$67&问题!$C$2:$C$67=$A2&B$1))
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-5-29 12:23 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
能不能帮忙用VBA写个全的吗?谢谢老师了

TA的精华主题

TA的得分主题

发表于 2011-5-29 12:39 | 显示全部楼层

附件稍等

  1. Option Explicit
  2. Sub samesum()
  3. Dim i As Long, n As Long, arr(), j As Long, y As Long
  4. Dim d, ds, k, t As Single

  5. t = Timer
  6. Worksheets(2).UsedRange.Offset(1).ClearContents

  7. Set d = CreateObject("Scripting.Dictionary")
  8. Set ds = CreateObject("Scripting.Dictionary")
  9. n = Worksheets(1).[b65536].End(xlUp).Row
  10. arr = Worksheets(1).Range("b2:c" & n).Value

  11. For i = 1 To UBound(arr)
  12.     d(arr(i, 1) & arr(i, 2)) = d(arr(i, 1) & arr(i, 2)) + 1
  13.     ds(arr(i, 1)) = ds(arr(i, 1)) + 1
  14. Next

  15. k = ds.keys
  16. Worksheets(2).[a2].Resize(ds.Count, 1) = Application.Transpose(k)
  17. Erase k
  18. Erase arr

  19. n = Worksheets(2).[a65536].End(xlUp).Row
  20. y = Worksheets(2).[iv1].End(xlToLeft).Column

  21. arr = Worksheets(2).Range(Worksheets(2).Cells(1, 1), Worksheets(2).Cells(n, y)).Value

  22. For i = 1 To UBound(arr, 1) - 1
  23.     For j = 1 To UBound(arr, 2) - 1
  24.        arr(i + 1, j + 1) = d(arr(i + 1, 1) & arr(1, j + 1))
  25.     Next
  26. Next

  27. Worksheets(2).[a1].Resize(UBound(arr, 1), UBound(arr, 2)) = arr

  28. Erase arr
  29. Set d = Nothing
  30. Set ds = Nothing

  31. MsgBox Timer - t & "秒"
  32. End Sub

复制代码

TA的精华主题

TA的得分主题

发表于 2011-5-29 12:42 | 显示全部楼层
试看看附件。

dai3795739统计.rar

12.1 KB, 下载次数: 23

TA的精华主题

TA的得分主题

发表于 2011-5-29 12:52 | 显示全部楼层
我把表二行做成变动了,表二的行标签是你表一线路列的不重复唯一值,如果你表二的行标签也是固定的,那就更容易了,一个字典就搞定了。

TA的精华主题

TA的得分主题

发表于 2011-5-29 14:07 | 显示全部楼层

SQL也做了一个,代码如下。

  1. Option Explicit
  2. Sub test()
  3. Dim cnn As Object, sql As String, BT As String

  4. Application.ScreenUpdating = False
  5. Worksheets(2).UsedRange.Offset(1).ClearContents
  6. Set cnn = CreateObject("ADODB.Connection")
  7. cnn.Open "Provider=Microsoft.Jet.Oledb.4.0;Extended Properties=Excel 8.0;Data Source=" & ThisWorkbook.FullName
  8. sql = "TRANSFORM count(类型) SELECT 线路名称 FROM [问题$] GROUP BY 线路名称 PIVOT 类型 in (原因不明,外力短路,设备老化,变台故障,用户责任,运行不当,施工质量,管理不当,维护质量,制造质量)"
  9. Worksheets(2).[a2].CopyFromRecordset cnn.Execute(sql)
  10. cnn.Close: Set cnn = Nothing
  11. Application.ScreenUpdating = True
  12. MsgBox "Ok"
  13. End Sub

复制代码

TA的精华主题

TA的得分主题

发表于 2011-5-29 14:11 | 显示全部楼层
两种方法都做进去了,自己玩玩吧。

dai3795739统计2.rar

14.49 KB, 下载次数: 9

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-5-29 16:49 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

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

GMT+8, 2024-4-23 21:24 , Processed in 0.045988 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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