excel - 将字母数字文本按字母顺序排序 VBA

标签 excel vba sorting

我有一个带有字母数字文本的 excel 表格,如图所示:
enter image description here
我想将自定义排序列表的所有行排序为(“无线”、“座机”、“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。

  • enter image description hereF1 中的公式:
    =LET(X,TOROW(A1:D1,1),SORTBY(X,FIND(MID(X,18,1),"WLV"),,X,))
    
    我选择按您的自定义范围进行第一次排序,然后按实际的数字字符串进行第二次排序。

    如果您无权访问 TOROW() ,可以改为FILTER() :
    =LET(X,FILTER(A1:D1,A1:D1<>""),SORTBY(X,FIND(MID(X,18,1),"WLV"),,X,))
    

    关于excel - 将字母数字文本按字母顺序排序 VBA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72253389/

    相关文章:

    ms-access - 电子邮件已取消错误处理程序

    vba - 如何从某一行开始将整列复制到另一列

    excel - 电子表格公式,返回范围与某个值匹配的行

    excel - 如何使用VBA将excel中的单元格值循环到网站文本框中?

    Ruby/Rails 根据每个项目的相似性对数组进行排序

    java对数组进行排序,其位置很重要

    java - 在困难的场景中有效地保持 Java 集合的排序

    excel - 如果满足三个不同的条件,如何使用 VBA 将数据从一张纸复制到另一张纸?

    vba - 在 VBA StrConv 中使用 Unicode

    excel - 将 Excel 行输出到一系列文本文件