| 
积分3833明经币 个注册时间2010-8-26在线时间 小时威望 金钱 个贡献 激情  
 | 
 
 
 楼主|
发表于 2013-4-7 07:53:02
|
显示全部楼层 
| 你们看,下面的自定义函数功能不是一目了然吗?如果用英文变量,你能一下看懂它是什么功能? 
 '自定义函数
 Function 二维数组按第二参数排序(将要排序的数组, 第一参数的第几列如果是一维填1即可, 升序1降序非1)    '(将要排序的数组[将要排序的数组], 第一参数的第几列如果是一维填1即可[垂直数组(y,x)中x,像表格中的哪一列], 升序1降序非1[=1,升序;<>1,降序])
 '自定义函数中不能有“Application.Transpose”转置函数,否则CAD中不能使用
 Dim t, x&, y&, i&, j&, k&
 ad = 判断数组维数(将要排序的数组)
 '这个IF是,如果如果是一维就转为二维。如果是二维,则看“第一参数的第几列如果是一维填1即可”该列的序号是否和数组吻合。
 If ad = 2 Then
 '。如果是二维,则看“第一参数的第几列如果是一维填1即可”该列的序号是否和数组吻合。不吻合就退出自定义函数
 If Not (第一参数的第几列如果是一维填1即可 >= LBound(将要排序的数组, 2) And 第一参数的第几列如果是一维填1即可 <= UBound(将要排序的数组, 2)) Then Exit Function
 Else
 Exit Function
 End If
 y = LBound(将要排序的数组, 1)
 x = LBound(将要排序的数组, 2)
 If 升序1降序非1 = 1 Then    '升序
 For i = y To UBound(将要排序的数组) - 1
 For j = i + 1 To UBound(将要排序的数组)
 If 将要排序的数组(j, 第一参数的第几列如果是一维填1即可) < 将要排序的数组(i, 第一参数的第几列如果是一维填1即可) Then    '冒泡排序法
 '这句话是将J行的数据N个与I行的数据N个互换
 For k = x To UBound(将要排序的数组, 2)
 t = 将要排序的数组(j, k): 将要排序的数组(j, k) = 将要排序的数组(i, k): 将要排序的数组(i, k) = t
 Next
 End If
 Next
 Next
 Else    '降序
 For i = y To UBound(将要排序的数组) - 1
 For j = i + 1 To UBound(将要排序的数组)
 If 将要排序的数组(j, 第一参数的第几列如果是一维填1即可) > 将要排序的数组(i, 第一参数的第几列如果是一维填1即可) Then
 '这句话是将J行的数据N个与I行的数据N个互换
 For k = x To UBound(将要排序的数组, 2)
 t = 将要排序的数组(j, k): 将要排序的数组(j, k) = 将要排序的数组(i, k): 将要排序的数组(i, k) = t
 Next
 End If
 Next
 Next
 End If
 
 二维数组按第二参数排序 = 将要排序的数组
 End Function
 
 
 | 
 |