ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 表格按特定条件拆分

[复制链接]

TA的精华主题

TA的得分主题

发表于 2018-8-22 19:07 | 显示全部楼层 |阅读模式
由于工作的需要,从公司的系统下载数据后,然后按"工站"来拆分表格,
如下图,

1,表1的数据,分拆成表2的数据,且每数量呈"递减"排列。
2,请帮忙把数据范围增加到最大。

求助大神打赏个VBA。

表1
表1.jpg

表2
表2.jpg



資料.7z

11.39 KB, 下载次数: 9

TA的精华主题

TA的得分主题

发表于 2018-8-22 19:30 | 显示全部楼层
问题本身不是很复制,可以用字典的方式解决,但是不知道你表2的样式,是有固定的格式,还是重新生成的。

TA的精华主题

TA的得分主题

发表于 2018-8-22 20:24 | 显示全部楼层
  1. Sub sdd()
  2. Dim brr(), crr()
  3. arr = Sheet1.[A1].CurrentRegion
  4. Set d = CreateObject("scripting.dictionary")
  5. Set d1 = CreateObject("scripting.dictionary")
  6. For i = 2 To UBound(arr)
  7. d1(arr(i, 2)) = ""
  8. d(arr(i, 2) & "-" & arr(i, 10)) = d(arr(i, 2) & "-" & arr(i, 10)) + 1
  9. Next i
  10. k = d.keys
  11. t = d.items
  12. k1 = d1.keys
  13. For i = 0 To d.Count - 1
  14. n = n + 1
  15. ReDim Preserve brr(1 To 3, 1 To n)
  16. brr(1, n) = Split(k(i), "-")(0)
  17. brr(2, n) = Split(k(i), "-")(1)
  18. brr(3, n) = t(i)
  19. Next i

  20. For i = 0 To d1.Count - 1
  21. For j = 1 To UBound(brr, 2)
  22. If brr(1, j) = k1(i) Then
  23. n1 = n1 + 1
  24. ReDim Preserve crr(1 To 3, 1 To n1)
  25. crr(1, n1) = n1
  26. crr(2, n1) = brr(2, j)
  27. crr(3, n1) = brr(3, j)
  28. End If
  29. Next j
  30. Sheet2.Cells(Sheet2.Range("b65536").End(xlUp).Row + 4, 2).Resize(UBound(crr, 2), 3) = Application.Transpose(crr)
  31. n1 = 0
  32. Next i

  33. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2018-8-22 20:44 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
Sub cc()
Set CN = CreateObject("adodb.connection")
CN.Open "provider=microsoft.jet.oledb.4.0;extended properties=excel 8.0;data source=" & ThisWorkbook.FullName
Sql = "SELECT DISTINCT 工站 FROM [表1$]"
Set rs = CN.Execute(Sql)
Do Until rs.EOF
gz = rs.FIELDS(0)
N = Sheets("表2").[c65536].End(3).Row
Cells(N + 1, 2) = gz
Cells(N + 1, 2).Interior.ColorIndex = 3
Cells(N + 1, 2).Font.Name = "黑体"
Cells(N + 1, 2).HorizontalAlignment = xlCenter
Range(Cells(N + 1, 2), Cells(N + 1, 6)).Merge
Cells(N + 2, 2).Resize(, 5) = Array("序号", "DEFECT PHENOMENON(不良現象)", "Q'TY 數 量", "DRI 負責人", "Due Date 完成日")
SQLL = "SELECT 失敗項,count(失敗項)  FROM [表1$] where 工站='" & gz & "' group by 失敗項 order by count(失敗項) desc"
Range("c" & N + 4).CopyFromRecordset CN.Execute(SQLL)
Range("B" & N + 1).CurrentRegion.Borders(xlDiagonalDown).LineStyle = xlNone
rs.movenext
Loop
End Sub

TA的精华主题

TA的得分主题

发表于 2018-8-22 20:50 | 显示全部楼层
附件请参考

資料.rar

21.84 KB, 下载次数: 25

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-8-23 19:04 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
chaohuahch 发表于 2018-8-22 19:30
问题本身不是很复制,可以用字典的方式解决,但是不知道你表2的样式,是有固定的格式,还是重新生成的。

是重新生产的

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-8-23 19:08 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2025-1-12 18:51 , Processed in 0.028395 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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