当前位置:首页 > 职场 >

excel数组排序函数(excel怎么一键排序)

来源:原点资讯(www.yd166.com)时间:2023-04-14 20:02:12作者:YD166手机阅读>>

VBA编程中,除了使用字典外,同样也会大量使用到数组。数组其实也不难,前面的文章中讲到了字典,其实你也是可以把它当成一个二维数组来看待的,只是字典的操作更加简洁,更容易理解,也更容易上手。

不管是字典,还是数组,其中一个最大的难题便是排序。我们在对数据处理的时候,肯定需要对数据进行排序的,以便筛选需要的数据。下面提供一个VBA中的自定义函数,它是一个通用的排序函数,可以做到拿来便用。

Function Array_Sort(Array_, Key1, Order) '(Array_[将要排序的数组], Key1[垂直数组(y,x)中x,像表格中的哪一列作关键字], Order[=1,升序;<>1,降序]) Dim t, x&, y&, i&, j&, k&, xx&, yy&, tt&, AD& For i = 1 To 60 On Error Resume Next Err.Clear tt = UBound(Array_, i) If Err.Number = 9 Then AD = i - 1: Exit For 'AD,数组维数 Next If AD = 2 Then If Not (Key1 >= LBound(Array_, 2) And Key1 <= UBound(Array_, 2)) Then Exit Function ElseIf AD = 1 Then Array_ = Application.Transpose(Array_) Key1 = 1 Else Exit Function End If y = LBound(Array_, 1): x = LBound(Array_, 2) yy = UBound(Array_): xx = UBound(Array_, 2) If Order = 1 Then '升序 For i = y To yy - 1 For j = i 1 To yy If Array_(j, Key1) < Array_(i, Key1) Then '冒泡排序法 For k = x To xx t = Array_(j, k): Array_(j, k) = Array_(i, k): Array_(i, k) = t Next End If Next Next Else '降序 For i = y To yy - 1 For j = i 1 To yy If Array_(j, Key1) > Array_(i, Key1) Then For k = x To xx t = Array_(j, k): Array_(j, k) = Array_(i, k): Array_(i, k) = t Next End If Next Next End If If AD = 2 Then Array_Sort = Array_ Else Array_Sort = Application.Transpose(Array_) End Function

自定义函数中有三个参数,其中,Array_[将要排序的数组], Key1[垂直数组(y,x)中x,像表格中的哪一列作关键字], Order[=1,升序;<>1,降序]

然后另外要强调的是,该自定义函数仅只能用于一维数组和二维数组。

下面举几个简单的例子来说明它的用法。

对一维数组的排序

Private Sub hong1_Click() Dim arr(1 To 5) '一维数组 For i = 1 To 5 arr(i) = [int(rand()*100) 1] Next [a1].Resize(1, 5) = arr brr = Array_Sort(arr, 1, 1) '详见自定义函数Array_Sort使用 [a2].Resize(1, 5) = brr End Sub

先对代码稍加解释一下:

Dim arr(1 To 5),首先定义一个一维数组

然后我们给数组随机赋值

[a1].Resize(1, 5) = arr,我们把数组填充到A1:E1

brr = Array_Sort(arr, 1, 1),然后通过自定义函数对原有的数组进行排序,并赋值给新数组

[a2].Resize(1, 5) = brr,排序后的结果填充到A2:E2

运行结果如下:

excel数组排序函数,excel怎么一键排序(1)

一维数组排序结果

对二维数组的排序

与一维数组相比较,唯一不同的点自定义函数中的Key,它可以是第一维,也可以是第二维,或者第三维。

如下面的代码,以第三维按降序排列。

Private Sub hong2_Click() Dim arr(1 To 5, 1 To 3) '二维数组 For i = 1 To 5 arr(i, 1) = [int(rand()*100) 1] arr(i, 2) = [int(rand()*100) 1] arr(i, 3) = [int(rand()*100) 1] Next [a4].Resize(5, 3) = arr brr = Array_Sort(arr, 3, 0) [f4].Resize(5, 3) = brr End Sub

运行结果如下图:

excel数组排序函数,excel怎么一键排序(2)

二维数组排序结果

如果以第二维按升序排列的话,只要修改自定义函数中的Key和Order即可。

brr = Array_Sort(arr, 1, 1)

运行结果如下:

excel数组排序函数,excel怎么一键排序(3)

二维数组排序结果

通过以上自定义函数,我们便能轻松的完成数组的排序了。建议收藏,直接拿来使用。

栏目热文

excel自定义排序函数(excel用什么函数来排序)

excel自定义排序函数(excel用什么函数来排序)

今天我们来学习一个Excel中的新函数,sort函数,它的作用是对某一个数据区域进行排序,之前是OFFICE365的专属...

2023-04-14 19:36:41查看全文 >>

excel表格排序函数(表格输入数字自动排序)

excel表格排序函数(表格输入数字自动排序)

排序,从字面意思理解就是将一组“无序”的记录调整为“有序”的记录。在Excel中,排序是一种常见的操作,那么,如何高效...

2023-04-14 19:46:59查看全文 >>

excel按条件排序函数(excel多条件排序函数)

excel按条件排序函数(excel多条件排序函数)

从这个案例来讲,它包含了三大内容,一是常规排序,二是条件排序,三是多个关键字查找引用。excel的排序问题,大多数情况下...

2023-04-14 20:06:15查看全文 >>

excel表格自定义排序(excel2007如何设置自定义排序)

excel表格自定义排序(excel2007如何设置自定义排序)

如下数据,按月份排序时不能正常的按1月-12月排序,这个时候就可以使用自定义序列按照以下步骤新建一个自定义序列,可以看到...

2023-04-14 20:12:28查看全文 >>

自动排名从高到低公式(根据总分自动排名)

自动排名从高到低公式(根据总分自动排名)

【温馨提示】亲爱的朋友,阅读之前请您点击【关注】,您的支持将是我最大的动力!成绩排名次、销售业绩排名次等等,都是职场中经...

2023-04-14 19:30:20查看全文 >>

excel排序函数怎么设置(excel排序函数rank怎么用)

excel排序函数怎么设置(excel排序函数rank怎么用)

提起排序,大家想到的肯定是系统再带的排序功能、Rank函数和Sumproduct函数,其实除常规的这三个功能之外,我们还...

2023-04-14 19:46:57查看全文 >>

儿童喝鲫鱼汤还是吃鱼肉好

儿童喝鲫鱼汤还是吃鱼肉好

1,带鱼中DHA和多不饱和脂肪酸EPA含量高于淡水鱼,再加上带鱼含有丰富的卵磷脂,更具补脑功能2,黄花鱼是非常适合孩子夏...

2023-04-14 20:17:23查看全文 >>

儿童适合长期喝鲫鱼汤吗(儿童每天喝鲫鱼汤好吗)

儿童适合长期喝鲫鱼汤吗(儿童每天喝鲫鱼汤好吗)

一到天冷,豆妈便喜欢隔三差五的炖汤来给家人喝,蔬菜汤、排骨汤、鱼汤。不过,今年的猪肉是真贵,豆妈这里今天已经快28元/斤...

2023-04-14 19:46:26查看全文 >>

儿童经常喝鲫鱼汤的好处和坏处(经常吃鲫鱼对身体有什么好处)

儿童经常喝鲫鱼汤的好处和坏处(经常吃鲫鱼对身体有什么好处)

在日常生活中,鲫鱼是很常见的一种鱼类食物,它的做法多样,鲫鱼汤就是其中最受欢迎的一种吃法,很多人都会喜欢喝鲫鱼汤。那么宝...

2023-04-14 19:49:39查看全文 >>

小孩喝鲫鱼汤的好处和坏处(儿童5岁喝鲫鱼汤的好处)

小孩喝鲫鱼汤的好处和坏处(儿童5岁喝鲫鱼汤的好处)

众所周知,鱼肉具有很高的营养价值,其含有的蛋白质和其他营养元素有助于儿童成长发育。但很多家长并不知道,并不是所有的鱼都可...

2023-04-14 19:37:47查看全文 >>

文档排行