在excel公式中反转域文本(拆分、反转数组、联接)

在excel公式中反转域文本(拆分、反转数组、联接),excel,Excel,假设我在excel中有一个域名字段,为了排序,我想颠倒子域、域和tld的顺序。例如: “my.sub.domain.example.org”变为“org.example.domain.sub.my” 您将如何在excel中执行此操作?我不确定如何使用工作表函数执行此操作,创建一个函数来执行此操作要简单得多 如果打开VBA编辑器,插入新模块并粘贴以下函数,则可以在工作表上使用它 Public Function Reverse(ByVal Expression As String, ByVal De

假设我在excel中有一个域名字段,为了排序,我想颠倒子域、域和tld的顺序。例如:

“my.sub.domain.example.org”变为“org.example.domain.sub.my”


您将如何在excel中执行此操作?

我不确定如何使用工作表函数执行此操作,创建一个函数来执行此操作要简单得多

如果打开VBA编辑器,插入新模块并粘贴以下函数,则可以在工作表上使用它

Public Function Reverse(ByVal Expression As String, ByVal Delimiter As String) As String
Dim Data() As String
Dim Result As String
Dim Index As Integer

    Result = ""
    Data = Split(Expression, Delimiter)
    Index = UBound(Data)

    Result = Data(Index)

    Do
        Index = Index - 1
        Result = Result & Delimiter & Data(Index)
    Loop While Index > 0

    Reverse = Result

End Function
范例

A1 ="my.example.site.tld"
A2 ="=Reverse(A1,".")"
A2=="tld.site.example.my"

使用带句点分隔符的文本到列。然后,可以使用=串联(…)或&(串联操作数)按所需的顺序和格式将它们拼接在一起


(但是NickSlash发布的VBA答案很好,这只是为了防止您需要非VBA)

谢谢您的建议,但是NickSlash的建议在我的情况下会更好,因为我希望定期对导入的数据执行此操作。我知道我没有在描述中明确说明这一要求。在Excel O365中,可以使用:
=TEXTJOIN(“.”,SORTBY(FILTERXML(“&replacement(A1,“,”)&“/s)”),SEQUENCE(LEN(A1)-LEN(replacement(A1,“,”)+1),-1))