Excel 公式从单元格中获取字符串值并按字母顺序对其字符进行排序

Ren*_*tin 2 sorting excel formula

你能帮我制作一个 Excel 公式,从单元格中获取字符串值并按字母顺序对其字符进行排序吗?

前任。

原始单元格值:' BACR ' 排序字符单元格:' ABCR '

Sco*_*ner 7

编辑 2022 年 4 月 29 日:

随着 Office 365 Excel 中引入的动态公式的出现,我们可以使用一个简单的公式来执行此操作:

=CONCAT(SORT(MID(A1,SEQUENCE(,LEN(A1)),1),1,1,TRUE))
Run Code Online (Sandbox Code Playgroud)

原来的:

此 UDF 将按字符对数字和文本进行排序:

Function sortletter(rng As Range)
    If rng.Count > 1 Then Exit Function
    Dim srtArr() As String
    Dim i&, j&, k&
    ReDim srtArr(1 To Len(rng))
    srtArr(1) = Mid(rng, 1, 1)
    For i = 2 To UBound(srtArr)
        For j = 1 To UBound(srtArr)
            If srtArr(j) = "" Then
                srtArr(j) = Mid(rng, i, 1)
                Exit For
            ElseIf IIf(Asc(Mid(rng, i, 1)) > 96, Asc(Mid(rng, i, 1)) - 32, Asc(Mid(rng, i, 1))) <= IIf(Asc(srtArr(j)) > 96, Asc(srtArr(j)) - 32, Asc(srtArr(j))) Then
                For k = UBound(srtArr) To j + 1 Step -1
                    srtArr(k) = srtArr(k - 1)
                Next k
                srtArr(j) = Mid(rng, i, 1)
                Exit For
            End If
        Next j
    Next i
    sortletter = Join(srtArr, "")
End Function
Run Code Online (Sandbox Code Playgroud)

将其作为附加到工作簿的模块,而不是放在工作表或 ThisWorkbook 代码中。

然后就可以像任何其他公式一样调用

=sortletter(A1)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述