2017-11-30 2 views
0

Ich habe viele Antworten auf, wie E-Mail-Liste nach Domain sortiert zu sehen. Was ich brauche, ist anders. Alles, was ich habe, ist eine Liste von Domänen und Subdomains, die richtig sortiert werden müssen. Wie Sie vielleicht wissen, beginnt eine Domänenhierarchie am Ende, dh zuerst kommt die .com, dann die Domäne und dann das Suffix, z. "www" Also muss ich sie nach Relevanz gruppieren. Zum Beispiel habe ich folgende Domains:Excel Sortierspalte nach Domain-Name, von Ende bis Anfang

www.somedomain.com 
www.someotherdomain.co.uk 
www.yetonemoredomain.org 
sub.somedomain.com 
1.somedomain.com 
2.yetonemoredomain.org 
3.someotherdomain.co.uk. 
www2.yetonemoredomain.org 
mail.someotherdomain.co.uk 

Plain Art von A bis Z wird von links nach rechts starten, aber ich brauche es als Feldtrennzeichen mit dem Punkt von rechts nach links, sortiert werden. Ich weiß, ein einfacher Bash-Befehl kann es tun, aber ich brauche es in Excel. Ich dachte über die Verwendung von "Text zu Spalten" und Trennung durch Punkte und dann Spalten nach Bedarf sortieren, aber dies kann auch Probleme mit der Erstellung von Spalten für 4th-Level-Domänen und höher, wie x.y.x.somedomain.com. Spalten werden von links nach rechts erstellt. Dies bedeutet, dass .com in verschiedene Spalten fallen kann und nicht die am weitesten gespaltene Spalte ist. Ich bin mir sicher, dass es einen besseren Weg dafür geben muss. Vielen Dank im Voraus für Ihre Hilfe. Ziv

+1

Sie benötigen eine Standard-Spalte Lösung übertreffen, oder ist eine VBA-Funktion, um eine praktikable Lösung (in Ihrem Makro-fähigen Arbeitsmappe definiert)? – Prebsus

+0

Ich möchte lieber nicht mit VBA und Makros umgehen, da ich versuche, eine Vorlage zu erstellen, und das Speichern einer Makro-fähigen Vorlage ist nicht das, was ich möchte. Ich bevorzuge eine einfache Standard-Excel-Lösung, aber je mehr ich drehe, desto stärker ist mein Gefühl, dass es keinen Weg gibt. Ich habe es geschafft, etwas zu tun, indem ich zuerst die Spalte nach dem Trennzeichen aufspalte und dann alle Spalten nach einer bestimmten Reihenfolge sortiere, z. Spalte 4, dann Spalte 3 und so weiter. Sobald sortiert, verknüpfte ich die Spalten zu einem einzigen und fügte einen Punkt zwischen ihnen hinzu, um die "volle" Domänenliste wie gewünscht sortiert zu bekommen. – TuxSax

Antwort

2

Dies ist wahrscheinlich eine Variation eines der ältesten algorithmischen Probleme, bekannt als Reverse the ordering of words in a string. Die erwartete Antwort ist die folgende - zweimal umgekehrt - jedes Wort und dann der ganze Satz.

In Ihrem Fall müssen Sie genau dies tun und dann sortieren.

Public Function ReverseMe(textToReverse As String, _ 
     Optional delim As String = " ") As String 

    Dim test As String 
    Dim arr  As Variant 
    Dim arr2 As Variant 
    Dim arrPart As Variant 
    Dim cnt  As Long 

    arr = Split(textToReverse, delim) 
    ReDim arr2(UBound(arr)) 

    For Each arrPart In arr 
     arr2(cnt) = StrReverse(arrPart) 
     cnt = cnt + 1 
    Next arrPart 

    ReverseMe = StrReverse(Join(arr2, delim)) 

End Function 

Public Sub TestMe() 

    Debug.Print ReverseMe("veso.dosev.diri.rid", ".") 
    Debug.Print ReverseMe("VBA is the best language") 

End Sub 

Sie würden erhalten:

rid.diri.dosev.veso 
language best the is VBA 
Verwandte Themen