ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

求教循环排序

[复制链接]

TA的精华主题

TA的得分主题

发表于 2013-5-20 07:26 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 lqbaz 于 2013-5-20 14:32 编辑

无标题.png 根据图片,想进行这样的排序,数据比较大,新手,希望各位老师指点。其中没有说明清楚的是,C列,是希望以1,2,3,4的顺序循环排列。

Book1.rar (8.9 KB, 下载次数: 8)



TA的精华主题

TA的得分主题

发表于 2013-5-20 08:00 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
C列不同行单元格对应D列单元格数值应该是一一对应的,C列由小到大排序而对应的D列就不可能按由小到大排序了吧?

TA的精华主题

TA的得分主题

发表于 2013-5-20 08:40 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2013-5-20 10:45 | 显示全部楼层
排序是可以选择两个条件的啊。
但也有主次之分。那就选择C列为第一排序条件,再选择D列为第二排序条件即可。

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-5-20 14:40 | 显示全部楼层
李甲 发表于 2013-5-20 08:40
先D列升序,再C列升序
就这样?
还是……

哦,C列以1,2,3,4的循环顺序排列。

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-5-20 14:41 | 显示全部楼层
ncow 发表于 2013-5-20 10:45
排序是可以选择两个条件的啊。
但也有主次之分。那就选择C列为第一排序条件,再选择D列为第二排序条件即可 ...

恩。但是自定义的排序,无法使用循环排列,还是我没有发现这个功能。求指导

TA的精华主题

TA的得分主题

发表于 2013-5-22 16:03 | 显示全部楼层
这样的效果吗
循环排序.JPG

循环排序.rar

25.25 KB, 下载次数: 2

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-5-22 20:33 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
sweetian 发表于 2013-5-22 16:03
这样的效果吗

谢谢热心回答。这个不是我要的效果,我希望是在原表格上的排序,而不再重新开一列来排序。

TA的精华主题

TA的得分主题

发表于 2013-5-23 08:49 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
  1. Sub round1()
  2.     Dim r, lastr, x, y, m, i As Integer
  3.     lastr = Sheets(1).Range("A65536").End(xlUp).Row + 1
  4.     m = 2 '用来记录排序序号
  5.     For i = 1 To lastr + 2
  6.         x = i Mod 4
  7.         y = i Mod 41
  8.         If x = 0 Then x = 4
  9.         For r = 2 To lastr + 2
  10.             If Sheets(1).Cells(r, "C") = x And Sheets(1).Cells(r, "D") = y Then
  11.                 If m <> r Then
  12.                     Sheets(1).Range("A" & r & ":F" & r).Cut
  13.                     Sheets(1).Range("A" & m).Select
  14.                     Selection.Insert Shift:=xlDown
  15.                 End If
  16.                 m = m + 1
  17.             End If
  18.         Next
  19.     Next
  20. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2013-5-23 08:35 | 显示全部楼层
你看看原表的排序是不是你需要的效果,如果是把程序稍微改动一下就行了
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-23 13:48 , Processed in 0.037584 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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