Excel精英培训网

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

[分享] 用VBA对数组进行排序的探讨

[复制链接]
发表于 2010-12-6 17:09 | 显示全部楼层 |阅读模式

个人感觉用VBA对一个一维数组进行排序有点不是那么方便,因此发这个帖子进行探讨一下,希望能发掘出比较好的思路和做法。

问题:放弃用EXCEL的单元格排序功能,也不用SQL,把A1:A12内容定义为一个数组用VBA进行排序,结果如E1:E12.

具体见附件

为了更能说明问题,我把附件改了一下(注意:同姓者还得名字中第二个字的拼音顺序进行排序)

mAWAVDpb.rar (4.47 KB, 下载次数: 52)

setq5K58.rar

4.68 KB, 下载次数: 169

用VBA对数组进行排序的探讨

发表于 2010-12-6 17:19 | 显示全部楼层

http://www.excelpx.com/dispbbs.asp?BoardID=38&replyID=1975101&id=141738&skin=0

以前 搜到的帖子 供楼主参考

 

[em04][em04][em04]
[此贴子已经被作者于2010-12-6 17:19:58编辑过]
回复

使用道具 举报

发表于 2010-12-6 17:20 | 显示全部楼层

ms阿木有一个贴子是讨论这个的,不过看过又忘了,再去学习一下再来
回复

使用道具 举报

发表于 2010-12-6 17:25 | 显示全部楼层

看好的是快速排序,该死的递归 

回复

使用道具 举报

发表于 2010-12-6 17:26 | 显示全部楼层

一维数组排序只会用冒泡法。

大学时候学的,其他的方法不怎么会。

回复

使用道具 举报

 楼主| 发表于 2010-12-6 20:39 | 显示全部楼层

2楼那个贴子我见过,基本上是对数字进行排序,而我这个问题是对单词和中文进行排序且另有要求(原附件有修改)
回复

使用道具 举报

发表于 2010-12-6 23:16 | 显示全部楼层

2楼对单词和中文同样起效。VBA中汉字的大小与表中不太一样
回复

使用道具 举报

发表于 2010-12-7 07:59 | 显示全部楼层

你会一维数组排序的话,二维数组排序是一样的。只不过是多一个循环罢了。
回复

使用道具 举报

发表于 2010-12-7 08:35 | 显示全部楼层

只要改变比较方式即可,你也可以用StrComp函数

Option Compare Text
Sub 排序()
    Dim Arr, Temp, ArrTemp
    Dim i%, j%, Count
    Arr = Sheet1.Range("A1:A12")
    Count = UBound(Arr)
    '冒泡排序
    For i = 1 To Count - 1
        For j = i + 1 To Count
           
            If Arr(i, 1) > Arr(j, 1) Then
                Temp = Arr(i, 1)
                Arr(i, 1) = Arr(j, 1)
                Arr(j, 1) = Temp
            End If
        Next j
    Next i
    Range("C1").Resize(Count, 1) = Arr
End Sub
回复

使用道具 举报

发表于 2010-12-7 08:42 | 显示全部楼层

你自己的方法呢?

你指的好的方法的具体是指什么,速度?你这点数据也不象测速度的样子。符合你的要求还是要排2维数组?

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-4 18:34 , Processed in 0.129111 second(s), 7 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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