首页 > 编程语言 >VBA 对象数组排序算法分享

VBA 对象数组排序算法分享

时间:2023-04-01 13:25:01浏览次数:47  
标签:VBA Set temp nValue 降序 temp1 objsToSort 算法 排序

 

Function SrotObjectByProperty(objsToSort As Variant, PropertyName As String, Optional 降序 As Boolean = True)
    If IsEmpty(objsToSort) Then Exit Function
    If InStr(TypeName(objsToSort), "()") < 1 Then Exit Function 'IsArray() is somewhat broken: Look for brackets in the type name
    Dim m As Long, n As Long, compareRtn As Integer
    Dim temp As Variant, temp1 As Variant
    For m = LBound(objsToSort) To UBound(objsToSort)
        For n = m To UBound(objsToSort)
            Set temp = objsToSort(n)
            Set temp1 = objsToSort(m)
            'https://docs.microsoft.com/zh-cn/office/vba/language/reference/user-interface-help/strcomp-function
            Dim nValue As Variant, mValue As Variant
            nValue = CallByName(objsToSort(n), PropertyName, VbGet)
            mValue = CallByName(objsToSort(m), PropertyName, VbGet)
            compareRtn = VBA.StrComp(nValue, mValue, vbTextCompare)
            If VBA.IsNumeric(nValue) Then
                If nValue < mValue And 降序 Then
                    'ElementSwap objsToSort(n), objsToSort(m)
                    Set objsToSort(n) = temp1
                    Set objsToSort(m) = temp
                ElseIf nValue > mValue And Not 降序 Then
                    'ElementSwap objsToSort(n), objsToSort(m)
                    Set objsToSort(n) = temp1
                    Set objsToSort(m) = temp
                End If
            Else
                If compareRtn = -1 And 降序 Then
                    'ElementSwap objsToSort(n), objsToSort(m)
                    Set objsToSort(n) = temp1
                    Set objsToSort(m) = temp
                ElseIf compareRtn = 1 And Not 降序 Then
                    'ElementSwap objsToSort(n), objsToSort(m)
                    Set objsToSort(n) = temp1
                    Set objsToSort(m) = temp
                End If
            End If
        Next n
    Next m
End Function

 

 

标签:VBA,Set,temp,nValue,降序,temp1,objsToSort,算法,排序
From: https://www.cnblogs.com/NanShengBlogs/p/17278458.html

相关文章

  • 算法笔记之并查集
    一、并查集的定义并查集是一种树型的数据结构,用于处理一些不相交集合(disjointsets)的合并及查询问题。常常在使用中以森林来表示。并查集,顾名思义,支持以下两种操作操作:并(Union):把两个不相交的集合合并为一个集合。查(Find):查询两个元素是否在同一个集合中。二、并查......
  • 桶排序
    leetcode  347.前K个高频元素    顾名思义,桶排序的意思是为每个值设立一个桶,桶内记录这个值出现的次数(或其它属性),然后对桶进行排序。红色代表频率。 最后,我们从后往前遍历,直到找到k个旧桶。 ......
  • Java 冒泡排序
    冒泡排序冒泡排序由嵌套循环完成,并分为外循环和内循环内循环负责比较数组中,两个相邻的元素,如果第一个数比第二个数大,则交换两者的位置,相邻两数依次循环进行比较每完成一次内循环比较(即外循环走完一步)都会产生一个当次内循环最大或者最小的数字并放在数组末尾所以外循......
  • java方法- 冒泡排序
    冒泡排序冒泡排序是最为出名的排序之一,总共有八大排序冒泡的代码是两层循环,外层冒泡轮数,里层依次比较算法时间复杂度为O(n2)优化优化方法之一 ......
  • 基于凸集上投影(POCS)的聚类算法
    POCS:ProjectionsontoConvexSets。在数学中,凸集是指其中任意两点间的线段均在该集合内的集合。而投影则是将某个点映射到另一个空间中的某个子空间上的操作。给定一个凸集合和一个点,可以通过找到该点在该凸集合上的投影来进行操作。该投影是离该点最近的凸集内的点,可以通过最小......
  • 【LBLD】小而美的算法技巧:前缀和数组
    【LBLD】小而美的算法技巧:前缀和数组一维数组中的前缀和classNumArray{private:vector<int>preSum;public:NumArray(vector<int>&nums){preSum.push_back(0);for(inti=1;i<nums.size()+1;i++){preSum.push_back(......
  • mp雪花算法生成的id到前端丢失精度问题
    mp生成的id是Long型18位,但是js处理到16位就四舍五入了,解决办法就是在服务器转成字符串传给前端  WebMvcConfig要继承WebMvcConfigurationSupport,重写里面的extendMessageConverters方法@OverrideprotectedvoidextendMessageConverters(List<HttpMessageConv......
  • 基于matlab的高精度信号峰值检测算法
    1.算法描述       峰值检验是示波表中数据采集方式之一,这种技术起源于存储深度不能满足捕获毛刺的需要。如果用模拟示波器去观察,只有当毛刺信号是重复性的并且和主信号同步时,才能看到毛刺信号。由于毛刺源于其他电路系统,所以这些毛刺只是偶尔发生,并且和主信号......
  • m基于PID控制算法的四旋翼无人机飞行控制simulink仿真
    1.算法描述  无人机采用常见的四旋翼无人飞行器,如图1所示。           PID控制器,即控制器的控制方式为P比例调整,I积分调整以及D微分调整三个部分构成,PID控制器是目前为止应用最为广泛的控制方式。PID控制器具有结构简单,性能稳定,参数设置简单等优势。PID控制......
  • prim算法(洛谷P1547)
    P1547[USACO05MAR]OutofHayS模板/*B1682[Usaco2005Mar]OutofHay干草危机洛谷P1547[USACO05MAR]OutofHayS====关键词===================================================prim算法(最小生成树)1.WA,没有加重复边的判断2.加了重复边的判断,还是WA,但分数高了一点3......