Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 1566|回复: 4

[已解决]如何用VBA从左边来源整理成右边那样的数据呢 ?

[复制链接]
发表于 2012-7-5 11:07 | 显示全部楼层 |阅读模式
本帖最后由 lewis16888 于 2012-7-5 11:36 编辑

请老师跟版主帮忙,谢了

F列按照顺序由大到小排列,如果长跟宽一样只出现一笔,且数量相加



最佳答案
2012-7-5 18:10

  1. Sub 汇总()
  2.     Dim arr, i, d, brr(), atmp
  3.     arr = Range("b2:d" & Range("b65536").End(3).Row)
  4.     Set d = CreateObject("scripting.dictionary")
  5.     For i = 1 To UBound(arr)
  6.         d(arr(i, 1) & " " & arr(i, 2)) = d(arr(i, 1) & " " & arr(i, 2)) + arr(i, 3)
  7.     Next
  8.     atmp = d.keys
  9.     ReDim brr(1 To 3, 0 To d.Count)
  10.     brr(1, 0) = "长": brr(2, 0) = "宽": brr(3, 0) = "数量"
  11.     For i = 1 To d.Count
  12.         brr(1, i) = Split(atmp(i - 1), " ")(0)
  13.         brr(2, i) = Split(atmp(i - 1), " ")(1)
  14.         brr(3, i) = d(atmp(i - 1))
  15.     Next
  16.     Application.ScreenUpdating = False
  17.     With Range("f1:h" & d.Count + 1)
  18.         .ClearContents
  19.         .Value = Application.Transpose(brr)
  20.         .Sort Key1:=Range("f2"), Order1:=xlDescending, Key2:=Range("g2"), _
  21.             Order2:=xlDescending, Key3:=Range("h2"), Order3:=xlDescending
  22.     End With
  23.     Application.ScreenUpdating = True
  24. End Sub
复制代码
Book122.rar (11.65 KB, 下载次数: 7)

Book122.rar

4.89 KB, 下载次数: 11

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2012-7-5 12:35 | 显示全部楼层
可用数据透视表方法实现 ,具体做法网上查
回复

使用道具 举报

发表于 2012-7-5 15:37 | 显示全部楼层
关键还要排序,如果只是取数会简单很多
回复

使用道具 举报

发表于 2012-7-5 17:03 | 显示全部楼层
看看是不是你想要的~~~~~~

Book122.zip

14.41 KB, 下载次数: 4

回复

使用道具 举报

发表于 2012-7-5 18:10 | 显示全部楼层    本楼为最佳答案   

  1. Sub 汇总()
  2.     Dim arr, i, d, brr(), atmp
  3.     arr = Range("b2:d" & Range("b65536").End(3).Row)
  4.     Set d = CreateObject("scripting.dictionary")
  5.     For i = 1 To UBound(arr)
  6.         d(arr(i, 1) & " " & arr(i, 2)) = d(arr(i, 1) & " " & arr(i, 2)) + arr(i, 3)
  7.     Next
  8.     atmp = d.keys
  9.     ReDim brr(1 To 3, 0 To d.Count)
  10.     brr(1, 0) = "长": brr(2, 0) = "宽": brr(3, 0) = "数量"
  11.     For i = 1 To d.Count
  12.         brr(1, i) = Split(atmp(i - 1), " ")(0)
  13.         brr(2, i) = Split(atmp(i - 1), " ")(1)
  14.         brr(3, i) = d(atmp(i - 1))
  15.     Next
  16.     Application.ScreenUpdating = False
  17.     With Range("f1:h" & d.Count + 1)
  18.         .ClearContents
  19.         .Value = Application.Transpose(brr)
  20.         .Sort Key1:=Range("f2"), Order1:=xlDescending, Key2:=Range("g2"), _
  21.             Order2:=xlDescending, Key3:=Range("h2"), Order3:=xlDescending
  22.     End With
  23.     Application.ScreenUpdating = True
  24. End Sub
复制代码
Book122.rar (11.65 KB, 下载次数: 7)

评分

参与人数 1 +6 收起 理由
gdsgzhrsh + 6 你也是字典班的?

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-19 05:38 , Processed in 0.244760 second(s), 15 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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