Excel精英培训网

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

[分享] [原创]贺新版开张 二维数组排序

[复制链接]
发表于 2007-10-3 17:54 | 显示全部楼层 |阅读模式

Sub arrAtoZ3()    '二维数组排序纵向排序
    arr = Range("a1:c2000")    ' 此处仅仅是简单获取一个数组
    a = LBound(arr)
    b = UBound(arr)
    x = LBound(arr, 2)
    y = UBound(arr, 2)
    L = 1 ' --------------------------------指定要排序的列序号
    L = a + L - 1
    tm = Timer
    For i = a To b
        s = arr(i, L)
        k = i
        For j = i + 1 To b
            If arr(j, L) < s Then
                s = arr(j, L)
                k = j
            End If
        Next
        If k > i Then
            For j = x To y
                s = arr(k, j)
                arr(k, j) = arr(i, j)
                arr(i, j) = s
            Next
        End If
    Next

    Debug.Print Timer - tm, ttt
    Range("d1").Resize(b - a + 1, y - x + 1) = arr

End Sub

发表于 2007-10-4 07:58 | 显示全部楼层
回复

使用道具 举报

发表于 2007-10-4 08:16 | 显示全部楼层

Sub arrAtoZ3()    '二维数组排序纵向排序
    arr = Range("a1:c2000")    ' 此处仅仅是简单获取一个数组
    a = LBound(arr)
    b = UBound(arr)
    x = LBound(arr, 2)
    y = UBound(arr, 2)
    L = 1 ' --------------------------------指定要排序的列序号
    L = a + L - 1
    tm = Timer
    For i = a To b
        s = arr(i, L)
        k = i
        For j = i + 1 To b
            If arr(j, L) < s Then
                s = arr(j, L)
                k = j
            End If
        Next
        If k > i Then
            For j = x To y
                s = arr(k, j)
                arr(k, j) = arr(i, j)
                arr(i, j) = s
            Next
        End If
    Next

    Debug.Print Timer - tm, ttt
    Range("d1").Resize(b - a + 1, y - x + 1) = arr

End Sub

以上代码中:Range("d1").Resize(b - a + 1, y - x + 1) = arr 是什么意思?

回复

使用道具 举报

发表于 2007-10-3 17:58 | 显示全部楼层

[em17][em17]
回复

使用道具 举报

 楼主| 发表于 2007-10-4 12:31 | 显示全部楼层

QUOTE:
:Range("d1").Resize(b - a + 1, y - x + 1) = arr 是什么意思?

 单元格(D1)重置大小 ( b - a + 1行 , y - x + 1  列)后的值 = arr

ab,cd分别是 arr数组的 第一维的 和第二维的 上下标

数组的并不一定 就是从 0 或 1 开始的

redim arr(10 to 19 ,3 to 6) 定义 一个 10行 4列的 数组

 b - a + 1 的意思就是 确定 数组有几行

回复

使用道具 举报

发表于 2007-10-3 18:39 | 显示全部楼层

过来学习啦[em02]
回复

使用道具 举报

发表于 2007-10-3 23:59 | 显示全部楼层

[em04][em04]

数组还没搞懂呢, 别提VBA了, 这个星期主要是休息. 下星期再看吧

回复

使用道具 举报

发表于 2007-10-4 00:20 | 显示全部楼层

虽然还看不太懂,先下载收藏了。谢谢楼主!!
回复

使用道具 举报

发表于 2007-10-4 00:31 | 显示全部楼层

嗯,学习了,

代码不长,慢慢研究

回复

使用道具 举报

发表于 2007-10-4 15:23 | 显示全部楼层

对数组还不是很了解,还需努力学习
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-29 19:48 , Processed in 0.281576 second(s), 7 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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