Excel 比较和组织两个相邻的列VBA

Excel 比较和组织两个相邻的列VBA,excel,vba,if-statement,comparison,Excel,Vba,If Statement,Comparison,我试图比较Excel中的两个相邻列,并根据大小对它们进行组织。我想比较单元格A1和B1,如果单元格A1>单元格B1,则切换单元格A1和B1。如果单元格A1

我试图比较Excel中的两个相邻列,并根据大小对它们进行组织。我想比较单元格A1和B1,如果单元格A1>单元格B1,则切换单元格A1和B1。如果单元格A1<单元格B1,则不执行任何操作。我想对数千行执行此操作,比较每行中的2个单元格,并使用宏进行相应调整。 前

我在这里发现了一个类似的问题:

任何帮助都将不胜感激

这是我在链接上找到的一张图片,我正试图以此为基础构建它。它并不完全符合我的要求,但我认为它接近于我正在尝试的框架!宏最好不会花费特别长的时间


Erik写道:宏最好不会花费特别长的时间。为了加速Scott Craner的循环,如果行数小于32768,可以将Dim i替换为Long,将Dim i替换为Integer。对于i=1到UBound(arr,1),也将其替换为Dim n作为整数,n=UBound(arr,1),对于i=1到n。。。等等,
Long
Integer
之间没有速度差异。我也不相信将Ubound赋值给变量会产生不同,因为调用只执行一次,而不是每次都执行一次循环@Peakpeak我得到类型不匹配的原因是什么?我只是想对数字进行排序,它们都是整数。对不起,我是VBA新手。我认为问题在于variantNo类型,还是在哪一行发生错误@Erikmarlyk示例数据和预期输出在哪里?到目前为止你的努力在哪里?请相应地编辑您的问题。有关改进问题的想法,请参阅和。只需包含标记为text的代码的文本。图像没有多大帮助。请回答您的问题并添加格式化为代码块的代码,而不是图像。
2|3 goes to 2|3
4|1 goes to 1|4
7|5 goes to 5|7
 Sub kjkj()
     With Worksheets("Sheet1") 'Change to your sheet
         Dim rng As Range
         Set rng = .Range("A1:B3") 'Change to your range

         Dim arr As Variant
         arr = rng.Value

         Dim outArr
         ReDim outArr(1 To UBound(arr, 1), 1 To UBound(arr, 2))

         Dim i As Long
         For i = 1 To UBound(arr, 1)
            If arr(i, 1) > arr(i, 2) Then
                outArr(i, 1) = arr(i, 2)
                outArr(i, 2) = arr(i, 1)
            Else
                outArr(i, 1) = arr(i, 1)
                outArr(i, 2) = arr(i, 2)
            End If
        Next i

        rng.Value = outArr
    End With
End Sub