VBA 中的冒泡排序排序不正确

Bubble Sort in VBA isn't sorting correctly

我正在尝试对一些数据进行冒泡排序,但排序不起作用。我想我必须做一些明显愚蠢的事情。我已经仔细阅读了代码,知道实际排序算法有问题。

        Do While Low <= High And Worksheets("Data").Cells(i, Column_EAM_WorkOrderNum) <> ""
            CheckVal = (High + Low) / 2
            If Worksheets("Data").Cells(i, Column_EAM_WorkOrderNum) = Worksheets("Data2").Cells(CheckVal, Column_KSR_WorkOrderNum) Then
               'Copy Data Over
                Worksheets("Data").Range("AM1").Offset(i - 1, 0).Value = Worksheets("Data2").Range("A1").Offset(CheckVal - 1, Column_KSR_ServiceID - 1).Value
                Worksheets("Data").Range("AN1").Offset(i - 1, 0).Value = Worksheets("Data2").Range("A1").Offset(CheckVal - 1, Column_KSR_CreatedDate - 1).Value
'
                If IsNumeric(Column_KSR_Type) = True Then
                    Worksheets("Data").Range("AO1").Offset(i - 1, 0).Value = Worksheets("Data2").Range("A1").Offset(CheckVal - 1, Column_KSR_Type - 1).Value
                End If
                Exit Do
            ElseIf Worksheets("Data").Cells(i, Column_EAM_WorkOrderNum) < Worksheets("Data2").Cells(CheckVal, Column_KSR_WorkOrderNum) And Worksheets("Data2").Cells(CheckVal, Column_KSR_WorkOrderNum) <> "Service Provider Ref #" Then
                Low = CheckVal - 1
            Else
                High = CheckVal + 1
            End If
        Loop

我提前道歉:请注意此代码的设置方式 我想不出一种简单的方法来提供最少的可重现代码,而无需复制数百行代码来支持这个简单的块。我希望我只是遗漏了一些明显的东西。

在 ElseIf 和 Else 中交换您的最低价和最高价。