首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >VBA排序AlphaNumeric

VBA排序AlphaNumeric
EN

Stack Overflow用户
提问于 2014-04-24 18:14:18
回答 1查看 786关注 0票数 0

我在VBA中有一个函数,它应该根据“气泡排序”对文本进行排序。如果文本只是文本,那么就可以了,但我的文本实际上是一个alpha数字字符串。我试图重写它,以说明数字部分,但仍有一些问题,我似乎不知道是什么。救命啊!!

代码语言:javascript
复制
Dim alphaCurr As String
Dim alphaNext As String
Dim rowCurr As FsChartRow
Dim rowNext As FsChartRow
Dim c As Integer
Dim n As Integer
Dim vTemp As Variant

For c = 1 To rows.count - 1
    Set rowCurr = rows(c)
    alphaCurr = GetAlpha(rowCurr.label)
    For n = c + 1 To rows.count
        Set rowNext = rows(n)
        alphaNext = GetAlpha(rowNext.label)

        If alphaCurr > alphaNext Then
            Set vTemp = rows(n)
            rows.Remove n
            rows.Add vTemp, , c
        End If

    Next n
Next c

Dim numCurr As Integer
Dim numNext As Integer
Dim loopCount As Integer

    For c = 1 To rows.count - 1
        Set rowCurr = rows(c)
        alphaCurr = GetAlpha(rowCurr.label)
        numCurr = GetNumeric(rowCurr.label)
        For n = c + 1 To rows.count
            Set rowNext = rows(n)
            alphaNext = GetAlpha(rowNext.label)
            numNext = GetNumeric(rowNext.label)

            If alphaCurr = alphaNext Then
                If numCurr > numNext Then
                    Set vTemp = rows(n)
                    rows.Remove n
                    rows.Add vTemp, , c
                End If
            End If

        Next n
    Next c

我得到的结果如下:

"BK1“、"BK2”、"FB1“、"FB4”、"FB3“、"FB5”、"FB6“、"FB2”、"FJ2“、"FJ1”、"FJ3“、"FJ4”……“"FJ15“"RB1”"H1“"H2”

谢谢你的帮助!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-25 18:03:47

我已经找到了解决问题的办法。我仍然无法使泡沫类型工作,所以我创建了自己的,这不需要更多的时间运行,然后泡沫类型。我会发邮件以防万一对任何人都有帮助。

代码语言:javascript
复制
Private Function SortFsChartRow(collection As collection) As collection

Dim min As Integer
Dim max As Integer
Dim x As Integer
Dim y As Integer
Dim rowCurr As FsChartRow
Dim numCurr As Integer
Dim rowMin As FsChartRow
Dim rowMax As FsChartRow

Dim search As Integer

Dim sorted As collection
Set sorted = New collection
min = 100
max = 0

For x = 1 To collection.count
    Set rowCurr = collection(x)
    numCurr = GetNumeric(rowCurr.label)
    If numCurr > max Then
        max = numCurr
        Set rowMax = rowCurr
    End If

    If numCurr < min Then
        min = numCurr
        Set rowMin = rowCurr
    End If
Next x

search = min

For y = 0 To max
    For x = 1 To collection.count
        Set rowCurr = collection(x)
        numCurr = GetNumeric(rowCurr.label)
        If numCurr = search Then
            sorted.Add rowCurr
            Exit For
        End If
    Next
    search = search + 1
Next y

Set SortFsChartRow = sorted

端函数

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23276688

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档