Excel精英培训网

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

[已解决]数据分别排序后另存

[复制链接]
发表于 2014-8-6 19:38 | 显示全部楼层 |阅读模式
5学分
本帖最后由 ms967967 于 2014-8-12 06:58 编辑

请求各位大侠帮助给写个VBA.
  要求将数据根据不同的列排序后将前8行另存到指定的区域。如附件
最佳答案
2014-8-11 09:19
考虑了你的行数及列数:
  1. Sub suaa()
  2. i = cells(Rows.Count, 2).End(3).Row
  3. j = cells(1, Columns.Count).End(1).Column
  4. Set Rng = Range("B1", cells(i, j))
  5. With Sheets("结果")
  6.     .cells.Delete
  7.     n = 1
  8.     For i = 2 To j - 1
  9.         Range(Rng(1, 1), Rng(Rng.Rows.Count, 1)).Copy .cells(1, n)
  10.         Range(Rng(1, i), Rng(Rng.Rows.Count, i)).Copy .cells(1, n + 1)
  11.         .Range(.cells(2, n), .cells(14, n + 1)).Sort .cells(2, n + 1), 2
  12.         n = n + 6
  13.     Next
  14.     .Rows("10:100").Delete
  15.     .Select
  16. End With
  17. End Sub
复制代码

 楼主| 发表于 2014-8-6 19:48 | 显示全部楼层
忘记附件了 新建 Microsoft Excel 工作表.rar (10.96 KB, 下载次数: 7)
回复

使用道具 举报

发表于 2014-8-6 19:52 | 显示全部楼层
回复

使用道具 举报

 楼主| 发表于 2014-8-6 20:01 | 显示全部楼层
su45 发表于 2014-8-6 19:52
为什么会有 “李四+周八” ?

在我的实际应用中需要有一个求和后排序的过程,不知是否还有好的办法,如果不方便实现那就只实现排序后另存吧。
回复

使用道具 举报

发表于 2014-8-6 20:05 | 显示全部楼层
怎么排序?关键字段是什么?升序?降序?
回复

使用道具 举报

 楼主| 发表于 2014-8-6 20:09 | 显示全部楼层
su45 发表于 2014-8-6 20:05
怎么排序?关键字段是什么?升序?降序?

跟据人名降序排列,效果如附件中的结果
回复

使用道具 举报

发表于 2014-8-6 23:03 | 显示全部楼层
是这种效果么?

新建 Microsoft Excel 工作表.zip (16.49 KB, 下载次数: 18)
回复

使用道具 举报

 楼主| 发表于 2014-8-7 06:15 | 显示全部楼层
su45 发表于 2014-8-6 23:03
是这种效果么?

是这个效果,只是我 不需要这么多,只需要其中的几个人名,如只要王五和钱九两人的。
回复

使用道具 举报

 楼主| 发表于 2014-8-11 06:31 | 显示全部楼层
su45 发表于 2014-8-6 23:03
是这种效果么?

谢谢SU45老师的帮助,
在实际应用过程中我的数据量行数不固定,最多时也要60多行,而且每天都会更新,能否在您的VBA中增加一个变量的设置,谢谢支持
回复

使用道具 举报

发表于 2014-8-11 09:19 | 显示全部楼层    本楼为最佳答案   
考虑了你的行数及列数:
  1. Sub suaa()
  2. i = cells(Rows.Count, 2).End(3).Row
  3. j = cells(1, Columns.Count).End(1).Column
  4. Set Rng = Range("B1", cells(i, j))
  5. With Sheets("结果")
  6.     .cells.Delete
  7.     n = 1
  8.     For i = 2 To j - 1
  9.         Range(Rng(1, 1), Rng(Rng.Rows.Count, 1)).Copy .cells(1, n)
  10.         Range(Rng(1, i), Rng(Rng.Rows.Count, i)).Copy .cells(1, n + 1)
  11.         .Range(.cells(2, n), .cells(14, n + 1)).Sort .cells(2, n + 1), 2
  12.         n = n + 6
  13.     Next
  14.     .Rows("10:100").Delete
  15.     .Select
  16. End With
  17. End Sub
复制代码
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-25 13:54 , Processed in 0.147762 second(s), 7 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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