【发布时间】:2014-04-26 02:03:47
【问题描述】:
我在 VBA 中有一个函数,它应该基于“冒泡排序”对文本进行排序。如果文本只是文本,那很好,但我的文本实际上是一个字母数字字符串。我试图重写它以解释数字部分,但仍然有问题,我似乎无法弄清楚是什么。请帮忙!!
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”
感谢您的帮助!
【问题讨论】:
-
I tried to rewrite it to account for the number part- 为什么简单的冒泡排序不适合? -
因为它输出了错误的顺序 BK2 将在 BK1 之前等......除非我做错了。我遵循了在 StackExchange 上找到的示例。
-
你做错了什么..check this