Vba 比较两个不同工作表中的单元格并将排列的结果粘贴到另一个工作表上

Vba 比较两个不同工作表中的单元格并将排列的结果粘贴到另一个工作表上,vba,excel,Vba,Excel,我有一部分代码,其中我有两个名为“Dia”和“E”的工作表,两个工作表中都有一个时间列。我正在编写一个程序,将两列的单元格相互比较,并按升序排列时间,该程序将放在第三张名为“E_Dia”的工作表中。当我运行代码时,代码以一种非常奇怪的方式执行循环。它不排列时间,而是先粘贴第一张图纸的时间单元格的所有值,然后粘贴第二张图纸的值 Dim i As Long ' initiating long variable Dim l As Long Dim j As Long j = 2 l =

我有一部分代码,其中我有两个名为“Dia”和“E”的工作表,两个工作表中都有一个时间列。我正在编写一个程序,将两列的单元格相互比较,并按升序排列时间,该程序将放在第三张名为“E_Dia”的工作表中。当我运行代码时,代码以一种非常奇怪的方式执行循环。它不排列时间,而是先粘贴第一张图纸的时间单元格的所有值,然后粘贴第二张图纸的值

Dim i As Long       ' initiating long variable
Dim l As Long
Dim j As Long


j = 2
l = 2

For i = 2 To LastRow_Dia

    Do While ActiveWorkbook.Sheets("Dia").Cells(i, 4).Value >= ActiveWorkbook.Sheets("E").Cells(j, 4).Value

        ActiveWorkbook.Sheets("E_Dia").Cells(l, 4).Value = ActiveWorkbook.Sheets("E").Cells(j, 4).Value
        j = j + 1
        l = l + 1
Loop

        ActiveWorkbook.Sheets("E_Dia").Cells(l, 4).Value = ActiveWorkbook.Sheets("Dia").Cells(i, 4).Value

        l = l + 1
Next i
预期结果示例如下所示:
前24行应具有“E”工作表中的时间值,因为这些行中的时间值较小。第25行应该有“Dia”工作表中的时间值,但它没有给出所需的输出

这些值是从什么开始排序的?您没有对代码中的值进行排序……您查看的是表直径,将E的所有值放入,直到E小于直径,然后放入直径。这不会对任一工作表中的值进行排序。时间在Dia和E工作表中已按升序排列。我所要做的就是比较两张表中的时间,最小的一张先进入E__Dia表。例如,dia表的第一次时间为13:53:16.059,E表的前24个单元格的时间小于此值。第24个单元格的时间为13:53:17。因此,从技术上讲,13:53:16.059应该放在E_Dia工作表的第25个单元格中,但它放在13:53:17中。这段代码对我来说效果很好(除了两个工作表中的最大值都在“E”中的情况)。一旦达到“Dia”的最后一个值,无论“E”中是否有更多值,这将停止)。我认为您对包含小于13:53:17的值的单元格数量感到困惑。您声明,“E的前24个单元格的时间小于'13:53:16.059',但随后声明第24个单元格的时间为'13:53:17'这些说法不可能都是真的。如果事实上第24个单元格的时间为'13:53:17',那么'13:53:16.059'中E中的第一个单元格将进入第24个单元格….在组合表中,组合表中的第25个单元格将为'13:53:17',代表表E中的第24个单元格。不确定问题出在哪里。我的意思是,如果您想测试输出应该是什么,将E中的整个列表复制到新的工作表上,将Dia中的整个列表放在其下方,然后使用Excel的排序功能。将其与代码的输出进行比较。