ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

怎么把上下行都有空白行隔开的区域按照日期从小到大重新排序?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2023-5-29 00:19 | 显示全部楼层 |阅读模式
求助大佬,
A列中上下都有空白行隔开的为一个日期区域,
把这些区域按照日期顺序从小到大重新排序,
排序后每一个日期区域都用一个空白行隔开,
重新排序只把A列到L列的内容移动排序,不能整行都移动,因为右边还有其他内容不能跟随一起移动的。




求助大佬帮忙看看。。
123.jpg

1222.rar

21.79 KB, 下载次数: 13

TA的精华主题

TA的得分主题

发表于 2023-5-29 09:16 | 显示全部楼层
请看附件。

a1222.zip

23.84 KB, 下载次数: 7

评分

3

查看全部评分

TA的精华主题

TA的得分主题

发表于 2023-5-29 10:05 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
排序的例子:
2023-5-29排序1.png
2023-5-29排序2.png

TA的精华主题

TA的得分主题

发表于 2023-5-29 11:31 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
image.jpg


TA的精华主题

TA的得分主题

发表于 2023-5-29 12:16 | 显示全部楼层

  1. Public Sub ssjss()
  2. Application.ScreenUpdating = False
  3. Dim arr As Variant, t As Variant
  4. Dim i As Long, r As Long
  5. With Sheets("Sheet1")
  6.     r = .Cells(Rows.Count, 1).End(xlUp).Row
  7.     arr = .Range("A1:M" & r)
  8. End With
  9. For i = 2 To UBound(arr)
  10.     If arr(i, 1) <> Empty Then
  11.         t = DateValue(arr(i, 1))
  12.         arr(i, 13) = t 'arr(i, 1)
  13.         If arr(i - 1, 1) = Empty Then arr(i - 1, 13) = t
  14.     End If
  15. Next i
  16. [q24].Resize(UBound(arr), UBound(arr, 2)) = arr
  17. [q24].Resize(UBound(arr), UBound(arr, 2)).Sort key1:=[ac24], Header:=xlYes
  18. [ac24].Resize(UBound(arr), 1) = ""
  19. Application.ScreenUpdating = True
  20. MsgBox "ok!"
  21. End Sub


复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-5-30 00:33 | 显示全部楼层

大佬你好,这个代码能不能修改一下,试用的时候发现几处不完美的地方。
第一个是有时候重新排序的时候默认都要从第3行开始往下排列,不要从第2行开始。因为第2行时默认留空白的。
第二个就是发现有时候重新排序的时候,I列的公式会被改变,第一个日期区域被重新排序到后面的时候会触发这个错误,I2的公式的后面部分 SUM($I1:$I$2),"")会被改变成SUM($I$1:$I2),"")
还有一个小问题就是不知道为什么 2-29 这个日期会被排序到所有日期的最后面。

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-5-30 00:44 | 显示全部楼层

还有就是重新排序的时候能不能依照现在的打印设置,使得排序后的某个日期区域不会分开在两页中打印,就是如果某个日期区域在排序后会被分开两页打印,就自动添加空白行往下一页调整,保证这个日期区域的内容只在同一页纸上打印。

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-6-7 22:07 | 显示全部楼层

大佬有空看看这个吗?代码还有一点点bug,能修复下吗?

第一个就是发现有时候重新排序的时候,I列的公式会被改变,第一个日期区域被重新排序到后面的时候会触发这个错误,I2的公式的后面部分 SUM($I1:$I$2),"")会被改变成SUM($I$1:$I2),"")
I列的都是公式,修改成不参与重新排序也可行的


第二个是能不能修改重新排序的时候默认从第3行开始往下排列,不要从第2行开始。因为第2行时默认留空白的。

还有一个小问题就是不知道为什么 2-29 这个日期会被排序到所有日期的最后面。

大佬有空再看看吗?

TA的精华主题

TA的得分主题

发表于 2023-6-8 09:58 | 显示全部楼层
百读谷歌 发表于 2023-6-7 22:07
大佬有空看看这个吗?代码还有一点点bug,能修复下吗?

第一个就是发现有时候重新排序的时候,I列的公 ...

关于7楼问题,另向高手求助。

b1222.zip

25.43 KB, 下载次数: 3

评分

3

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-6-9 22:42 | 显示全部楼层
清风竹- 发表于 2023-6-8 09:58
关于7楼问题,另向高手求助。

不胜感激,劳烦大佬了。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

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

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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