在excel公式中反转域文本(拆分、反转数组、联接)
假设我在excel中有一个域名字段,为了排序,我想颠倒子域、域和tld的顺序。例如: “my.sub.domain.example.org”变为“org.example.domain.sub.my”在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中执行此操作?我不确定如何使用工作表函数执行此操作,创建一个函数来执行此操作要简单得多 如果打开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))