VBA自定义排序

EXCEL自定义排序最多只能有255个值,超过了就不能用自定义序列了,使用以下方法

求助excelhome论坛得出的答案

Sub 自定义排序()
Application.ScreenUpdating = False
'排序标准
Dim d As Object
Set d = CreateObject("Scripting.Dictionary")
Dim rng, i%
rng = Sheets("查补排序").[a1].CurrentRegion
For i = 2 To UBound(rng)             '不含标题
        d(rng(i, 1)) = i        '序号
Next
'数据源
Dim arr, brr
arr = [a1].CurrentRegion
ReDim brr(1 To UBound(arr, 2))
For i = 5 To UBound(arr, 2)       '不含标题
    If d.Exists(arr(1, i)) Then
        brr(i) = d(arr(1, i))      '序号
    Else
        brr(i) = "不存在"
    End If
Next
Set d = Nothing
Rows(1).Insert
[a1].Resize(1, UBound(brr)) = brr
[e1].Resize(UBound(arr) + 1, UBound(arr, 2)).Sort key1:=[e1], Orientation:=xlLeftToRight, order1:=xlAscending '按行排序,降序
Rows(1).Delete
Application.ScreenUpdating = True
MsgBox "排序完成"
End Sub

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值