ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 双条件排序

[复制链接]

TA的精华主题

TA的得分主题

发表于 2015-5-21 07:49 | 显示全部楼层 |阅读模式
双条件排序,将排序条件放入 array 中,而不是引用单元格(附件放在单元是是为了说明排序条件):
排序条件黄色单元格(车间,组别)2G,C是排在最后的。     

双条件排序.rar

9.42 KB, 下载次数: 24

TA的精华主题

TA的得分主题

发表于 2015-5-21 16:07 | 显示全部楼层
用公式生成辅助列E列,再排序即可。如用VBA,思路与数组公式相同

双条件排序.rar

12.49 KB, 下载次数: 19

TA的精华主题

TA的得分主题

发表于 2015-5-21 16:20 | 显示全部楼层
.....
  1. Sub test()
  2.     Dim arr, brr, brr1, crr, d, i&, ii&, j&, n&, k
  3.     Set d = CreateObject("scripting.dictionary")
  4.     Set d1 = CreateObject("scripting.dictionary")
  5.     arr = Range("B3:D" & Cells(Rows.Count, 2).End(xlUp).Row) '确定数组范围
  6.     brr = Array("3A", "3B", "3C", "3D", "3E", "3F", "2G", "2H", "2J", "3G", "3H", "3J") '指定条件,但不知指定第二个条件“组别”????
  7.     brr1 = Array("A", "B", "C")
  8.     ReDim crr(1 To UBound(arr), 1 To UBound(arr, 2))
  9.     For i = 0 To UBound(brr)
  10.         For ii = 0 To UBound(brr1)
  11.             d(brr(i) & brr1(ii)) = ""
  12.         Next ii
  13.     Next i
  14.     For i = 1 To UBound(arr)
  15.        k = i & "," & arr(i, 1) & arr(i, 2)
  16.        d1(k) = i
  17.     Next
  18.     n = 0
  19.     For Each k In d
  20.         temp = Filter(d1.keys, k)
  21.         For i = 0 To UBound(temp)
  22.             n = n + 1
  23.             For j = 1 To 3
  24.                 crr(n, j) = arr(d1(temp(i)), j)
  25.             Next j
  26.         Next
  27.     Next
  28.     Range("M3").Resize(UBound(crr), UBound(crr, 2)) = crr
  29. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2015-5-21 16:24 | 显示全部楼层
...
双条件排序.rar (12.39 KB, 下载次数: 23)

TA的精华主题

TA的得分主题

发表于 2015-5-21 16:40 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2015-5-21 16:50 | 显示全部楼层
  1. Sub aa()
  2. ra = Range("b" & Rows.Count).End(xlUp).Row
  3. arr = Range("b3:e" & ra)
  4. For i = 1 To UBound(arr)
  5.     arr(i, 4) = arr(i, 1) & arr(i, 2)
  6. Next

  7. rb = Range("t" & Rows.Count).End(xlUp).Row
  8. brr = Range("t3:u" & rb)
  9. For i = 1 To UBound(brr)
  10.     brr(i, 1) = brr(i, 1) & brr(i, 2)
  11. Next

  12. crr = YjhSort(arr, "a", "4u0;1;1", , , , , , , brr)
  13. Range("m3").Resize(UBound(crr), 3) = crr

  14. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2015-5-21 16:53 | 显示全部楼层
自定义序列。

数组预处理(二列合并)

双条件排序.rar

82.65 KB, 下载次数: 16

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-5-21 18:12 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

与效果不符合。

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-5-21 18:42 | 显示全部楼层
yjh_27 发表于 2015-5-21 16:53
自定义序列。

数组预处理(二列合并)

黄色单元格的排序条件(T3:U38)能不能写入代码中去?因为实际操作时,工作表中是没有的,附件只是为了说明而列出来的。

双条件排序2.rar

80.23 KB, 下载次数: 8

TA的精华主题

TA的得分主题

发表于 2015-5-21 18:47 | 显示全部楼层
张雄友 发表于 2015-5-21 18:42
黄色单元格的排序条件(T3:U38)能不能写入代码中去?因为实际操作时,工作表中是没有的,附件只是为了 ...

不能,因为你的排序条件无规律可言。
工作表中是没有的:可以在其他表中指定,否则需在代码生成(难度大)
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-22 11:06 , Processed in 0.053655 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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