Excel精英培训网

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

[已解决]自定义排序宏求修改

[复制链接]
发表于 2014-6-2 13:32 | 显示全部楼层 |阅读模式
希望可以把自定义的名字换成按单元格的内容排序,曾试过把名字换成CustomOrder:= _        "e2,e3,e4,e5,e6,e7,e8,e9,e10,e11,e12,e13,e14,e15,e16",没有用。希望大神帮忙!!!!!!!!!

Sub Macro11()
'
' Macro11 Macro
'
' 快捷键: Ctrl+y
'
    Range("C2:F19").Select
    ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add Key:=Range("C2:C19") _
        , SortOn:=xlSortOnValues, Order:=xlAscending, CustomOrder:= _
        "谢太阳,朱水平,蔡志群,陈长海,陈长钱,陈长任,陈春香,陈丹,陈东方,陈冬娇,陈冬仔,陈光辉,陈红英,陈菊连,陈黎文", DataOption:= _
        xlSortNormal
    With ActiveWorkbook.Worksheets("Sheet1").Sort
        .SetRange Range("C2:F19")
        .Header = xlGuess
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
End Sub

最佳答案
2014-6-2 14:05
本帖最后由 大灰狼1976 于 2014-6-2 18:54 编辑

试试这样行不行,没附件不能测试,错了不要怪我啊。
另,好象跟我录制的宏一点都不一样啊,你是哪个版本的?我2003
  1. Sub Macro11()
  2. '
  3. ' Macro11 Macro
  4. '
  5. ' 快捷键: Ctrl+y
  6.     dim arr
  7.     arr = Application.Transpose([e2:e16])
  8.     Range("C2:F19").Select
  9.     ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Clear
  10.     ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add Key:=Range("C2:C19") _
  11.         , SortOn:=xlSortOnValues, Order:=xlAscending, CustomOrder:= _
  12.         Join(arr, ","), DataOption:= _
  13.         xlSortNormal
  14.     With ActiveWorkbook.Worksheets("Sheet1").Sort
  15.         .SetRange Range("C2:F19")
  16.         .Header = xlGuess
  17.         .MatchCase = False
  18.         .Orientation = xlTopToBottom
  19.         .SortMethod = xlPinYin
  20.         .Apply
  21.     End With
  22. End Sub
复制代码
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2014-6-2 14:05 | 显示全部楼层    本楼为最佳答案   
本帖最后由 大灰狼1976 于 2014-6-2 18:54 编辑

试试这样行不行,没附件不能测试,错了不要怪我啊。
另,好象跟我录制的宏一点都不一样啊,你是哪个版本的?我2003
  1. Sub Macro11()
  2. '
  3. ' Macro11 Macro
  4. '
  5. ' 快捷键: Ctrl+y
  6.     dim arr
  7.     arr = Application.Transpose([e2:e16])
  8.     Range("C2:F19").Select
  9.     ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Clear
  10.     ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add Key:=Range("C2:C19") _
  11.         , SortOn:=xlSortOnValues, Order:=xlAscending, CustomOrder:= _
  12.         Join(arr, ","), DataOption:= _
  13.         xlSortNormal
  14.     With ActiveWorkbook.Worksheets("Sheet1").Sort
  15.         .SetRange Range("C2:F19")
  16.         .Header = xlGuess
  17.         .MatchCase = False
  18.         .Orientation = xlTopToBottom
  19.         .SortMethod = xlPinYin
  20.         .Apply
  21.     End With
  22. End Sub
复制代码
回复

使用道具 举报

 楼主| 发表于 2014-6-2 18:41 | 显示全部楼层
大灰狼1976 发表于 2014-6-2 14:05
试试这样行不行,没附件不能测试,错了不要怪我啊。
另,好象跟我录制的宏一点都不一样啊,你是哪个版本的 ...

你太厉害了[em17],我是用07版录的宏。我试了你的代码,非常有用。就是可不可以把sheet1改为当前工作表。因为一个工作簿有多张工作表,希望只用一个宏搞定,这样就更完美了。再次感谢你的热心帮助!{:091:}
回复

使用道具 举报

发表于 2014-6-2 18:50 | 显示全部楼层
把代码内所有Worksheets("Sheet1")全部替换为activesheet试试
回复

使用道具 举报

 楼主| 发表于 2014-6-2 19:31 | 显示全部楼层
大灰狼1976 发表于 2014-6-2 18:50
把代码内所有Worksheets("Sheet1")全部替换为activesheet试试

OK搞定,收下我的膝盖!!!!!!![em01]
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-26 15:43 , Processed in 0.760285 second(s), 12 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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