【问题标题】:Bubble Sort in VBA isn't sorting correctly [closed]VBA中的冒泡排序未正确排序[关闭]
【发布时间】:2021-01-25 14:00:00
【问题描述】:

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

        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

我提前道歉:如何设置此代码我无法找到一种简单的方法来提供最少的可复制代码,而无需复制数百行代码来支持这个简单的块。我希望我只是遗漏了一些明显的东西。

【问题讨论】:

    标签: excel vba bubble-sort


    【解决方案1】:

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

    【讨论】:

    • 好的答案应该包含一个以上的句子 (How to Answer)。
    • 不!我想这就是我所需要的!到目前为止,它看起来已经修复了。
    • 是的!就是这样!谢谢!现在你指出它是如此明显!
    • 是的 - PEH 是对的。一个好的答案是一个可以解释某些事情的答案。 SO 是(曾经是?)不仅要帮助 OP,还要帮助社区。​​span>
    • 我已经投票结束这个问题,因为我认为这个问题和答案对未来的读者都没有用,这是一个简单的逻辑错误。
    猜你喜欢
    • 1970-01-01
    • 2018-08-19
    • 1970-01-01
    • 2014-02-13
    • 1970-01-01
    • 1970-01-01
    • 2020-05-24
    • 2013-06-28
    相关资源
    最近更新 更多