按字母顺序对字母数字文本进行排序 VBA

Sorting alphanumeric text as alphabetically VBA

我有一个 excel 有字母数字文本的表,如图所示:

我想使用自定义排序列表将所有行排序为(“无线”、“固定电话”、“VOIP”),

vba 代码工作但是它把数据排序为数字,而我想按字母顺序排序数据并忽略数字 请告诉我解决方案。

Sub SortIndividualR()
'Updateby Extendoffice
    Dim xRg As Range, yRg As Range, vCustom_Sort As Variant, rr As Long
    vCustom_Sort = Array("Wireless", "Landline", "VOIP", Chr(42))
    Application.AddCustomList ListArray:=vCustom_Sort
    If TypeName(Selection) <> "Range" Then Exit Sub
    Set xRg = Selection
    If xRg.Count = 1 Then
        MsgBox "Select multiple cells!", vbExclamation, "Kutools for Excel"
        Exit Sub
    End If
    With Application
        .ScreenUpdating = False
        .EnableEvents = False
        .Calculation = xlCalculationManual
    End With
    Application.ScreenUpdating = False
    For Each yRg In xRg.Rows
         yRg.NumberFormat = "@"
        yRg.Sort Key1:=yRg.Cells(1, 1), Order1:=xlAscending, _
       Orientation:=xlSortRows, Header:=xlYes, MatchCase:=False, _
                    OrderCustom:=Application.CustomListCount + 1

        
    Next yRg
    With Application
        .ScreenUpdating = True
        .EnableEvents = True
        .Calculation = xlCalculationAutomatic
    End With
    Application.ScreenUpdating = True
End Sub

假设:

  • 每个单元格中存在这三个选项之一;
  • 每个单元格的格式根据您的示例数据;
  • 你不需要 VBA 本身;
  • 访问 ms365。

F1中的公式:

=LET(X,TOROW(A1:D1,1),SORTBY(X,FIND(MID(X,18,1),"WLV"),,X,))

我选择第一次按您的自定义范围排序,第二次按实际数字排序 string


如果您没有 TOROW() 的访问权限,您可以更改为 FILTER():

=LET(X,FILTER(A1:D1,A1:D1<>""),SORTBY(X,FIND(MID(X,18,1),"WLV"),,X,))