Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
12
返回列表 发新帖
楼主: 张雄友

[已解决]排序

[复制链接]
 楼主| 发表于 2013-6-21 21:59 | 显示全部楼层
hwc2ycy 发表于 2013-6-21 21:52
等下。

好的,谢谢了。在线等。
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
回复

使用道具 举报

发表于 2013-6-21 22:07 | 显示全部楼层
回复

使用道具 举报

 楼主| 发表于 2013-6-21 22:11 | 显示全部楼层
hwc2ycy 发表于 2013-6-21 22:07
表21,写成表二一么?

写成表二十一。
回复

使用道具 举报

发表于 2013-6-22 01:55 | 显示全部楼层
试了N次,应该能通用了
Sub 工作表排序2()
    Dim a As Integer
    Dim arr, brr(1 To 30)
    Dim crr(1 To 30)
    For i = 1 To 30
    crr(i) = i
    Next
    For i = 1 To Sheets.Count
    men = Sheets(i).Name
    men = Right(men, Len(men) - 1)
    nb = nb & "," & men
    Next
   arr = Split(nb, ",")
   For i = 1 To UBound(arr)
brr(i) = IIf(Left(arr(i), 1) = "十", Application.Match("一" & arr(i), _
Application.Text(crr, "[DBNum1]"), 0), Application.Match(arr(i), Application.Text(crr, "[DBNum1]"), 0))
Next
For i = 1 To UBound(brr)
m = Application.Small(brr, i)
If m = 11 Then
n = "十一"
Else
n = Application.Text(m, "[DBNum1]")
End If
On Error Resume Next
Worksheets("表" & n).Move before:=Worksheets(i)
Next
End Sub
回复

使用道具 举报

 楼主| 发表于 2013-6-22 05:29 | 显示全部楼层
lyf7276 发表于 2013-6-22 01:55
试了N次,应该能通用了
Sub 工作表排序2()
    Dim a As Integer

运行时错误‘13,类型不匹配。

工作表排序.rar

9.64 KB, 下载次数: 3

回复

使用道具 举报

发表于 2013-6-22 08:03 | 显示全部楼层    本楼为最佳答案   
请注意: Dim arr, brr(1 To 30)
    Dim crr(1 To 30)
    For i = 1 To 30
这我设置的都是30,所以工作表的最大数不能超过30,
Sub 工作表排序2()
    Dim a As Integer
    Dim arr, brr(1 To 130)
    Dim crr(1 To 130)
    For i = 1 To 130
    crr(i) = i
    Next
    For i = 1 To Sheets.Count
    men = Sheets(i).Name
    men = Right(men, Len(men) - 1)
    nb = nb & "," & men
    Next
   arr = Split(nb, ",")
   For i = 1 To UBound(arr)
brr(i) = IIf(Left(arr(i), 1) = "十", Application.Match("一" & arr(i), _
Application.Text(crr, "[DBNum1]"), 0), Application.Match(arr(i), Application.Text(crr, "[DBNum1]"), 0))
Next
For i = 1 To UBound(brr)
m = Application.Small(brr, i)
n = IIf(Len(m) = 2 And Left(m, 1) = 1, _
Right(Application.Text(m, "[DBNum1]"), 2), _
Application.Text(m, "[DBNum1]"))

On Error Resume Next
Worksheets("表" & n).Move before:=Worksheets(i)
Next
End Sub
你用上面这段码,如果你的表数超过130,就改这的数字
Dim arr, brr(1 To 130)
    Dim crr(1 To 130)
    For i = 1 To 130 不要用上面的代码了。
回复

使用道具 举报

发表于 2013-6-22 08:04 | 显示全部楼层
13楼的代码不要用了,用16楼的。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-8 04:55 , Processed in 1.255638 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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