Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基于数字和点(.)组合的Excel VBA宏排序_Excel_Sorting_Vba - Fatal编程技术网

基于数字和点(.)组合的Excel VBA宏排序

基于数字和点(.)组合的Excel VBA宏排序,excel,sorting,vba,Excel,Sorting,Vba,我正在寻找在excel中根据以下条件使用宏对工作表进行排序。我在下面给出一个例子。你能告诉我相应的排序算法吗 排序应根据编号顺序以及一个或多个“.”进行 例如,我有以下一组未排序的值: 然后,我需要一个宏,该宏应根据ID对工作表进行排序,该ID应根据数字以及1或多个“.”进行排序。因此,如果有1,1.1.1,1.1,1.2,排序顺序应该是1,1.1,1.1.1,1.2 因此,在排序的宏运行之后,上面未排序的工作表应该如下所示 这对我来说是个窍门: Option Explicit Sub So

我正在寻找在excel中根据以下条件使用宏对工作表进行排序。我在下面给出一个例子。你能告诉我相应的排序算法吗

排序应根据编号顺序以及一个或多个“.”进行

例如,我有以下一组未排序的值:

然后,我需要一个宏,该宏应根据ID对工作表进行排序,该ID应根据数字以及1或多个“.”进行排序。因此,如果有1,1.1.1,1.1,1.2,排序顺序应该是1,1.1,1.1.1,1.2

因此,在排序的宏运行之后,上面未排序的工作表应该如下所示


这对我来说是个窍门:

Option Explicit

Sub SortThis()

Dim lonLastRow As Long
Dim rng As Range

With ActiveSheet
  lonLastRow = .Cells(Rows.Count, 1).End(xlUp).Row
  Set rng = .Range(.Cells(2, 2), .Cells(lonLastRow, 2))
  rng.Sort Key1:=.Cells(2, 2)
End With

End Sub

请确保将“Activesheet”替换为直接引用您需要的工作表(通过编号或bij名称)。

我找到了解决问题的方法。我已经拆分了ID列并基于。使用公式和定界符进行排序,然后创建一个宏,根据排序和ID对工作表进行排序


为什么不让VBA代码让Excel按升序排序呢?只有升序是行不通的。因为它需要根据编号顺序以及“.”进行排序。我看到您已经更新了您的要求,以获得不同的数据。在这种情况下,您需要编写一些VBA。发布您到目前为止拥有的内容,我们可能会帮助您完成。这不起作用。请查看最新的要求,它确实有效。。对于您的更新要求,您只需根据需要调整范围“rng”和键1。。。
Public Sub SortWorksheet()
    ThisWorkbook.Worksheets(WS_SiteRawData).Activate
    Range("A3:IR1000").Select
    Selection.sort Key1:=Range("N3"), Order1:=xlAscending, Key2:=Range("E3") _
        , Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:= _
        False, Orientation:=xlTopToBottom
End Sub