Clever-Excel-Forum

Normale Version: Mehrteilige Begriffe nach einem Wort sortieren
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hey ihr lieben,

ich habe folgendes Problem. Ich habe eine große Liste an mehrteiligen Keywords.
Beispiel:

hafenstadt hamburg bootsfahrt
bootsfahrt hamburg hafenstadt
hamburg hafenstadt bootsfahrt
bootsfahrt in hafenstadt hamburg machen
tour mit dem boot durch hamburg
bootsfahrt durch hamburg 
etc. etc.


Ich möchte gerne die Spalte mit den Zellen jetzt so sortieren, das Hamburg immer links aufgelistet wird.
Damit ich nach der Sortierung sehe, welche Zellen eigentlich dasselbe sind, nur anders sortiert.


Also das:
hafenstadt hamburg bootsfahrt
bootsfahrt hamburg hafenstadt

beides als

hamburg hafenstadt bootsfahrt

angezeigt wird.


Ich habe mal damals geschafft, dass so nach Worten zu sortieren, dass die komplette Spalte jeweils nach dem populärsten Wort sortiert wurde.
Also das dann, wo überall Hamburg drin war, das so angezeigt wurde, das ich direkt erkannt habe, was im weiteren Sinne Dopplungen sind.


Erweiterte Frage:

Das ging doch auch irgendwie, dass die Spalte generell nach oft verwendeten Begriffen sortiert wird oder? Also wenn dann auch noch weiter unten aufgelistet oft Bremen vorkommt, das Bremen dann auch links angezeigt wird. Wieder um zu erkennen, was quasi derselbe Satz / dieselbe Wörterfolge nur verschieden angeordnet ist. Oder?

Es wäre super wenn mir irgendjemand helfen könnte. Ich habe hier ellenlange Listen und bekomme hier langsam einen Koller. :(

Ganz liebe Grüße,

Fabian
Hallo

Mit VBA und benutzerdefinierte Funktion. Benutzerdefinierte Funktion in Excel VBA - office-skill

Die Funktion sortiert den Zellinhalt alphabetisch.
Code:
Public Function SortZelle(rng As Range)
Dim Werte, k

With CreateObject("System.Collections.ArrayList")
Werte = Split(rng)
For Each k In Werte
  .Add k
Next k
.Sort
SortZelle = Join(.toarray)
End With
End Function
In A1 steht "hafenstadt hamburg bootsfahrt" und in B1 schreibst du SortZelle(A1).

Gruß Elex
Hallo Fabian,

wenn die Liste in Spalte A steht sollte dieser Code die sortierte Liste in Spalte B schreiben:

Code:
Sub Sort_Hamburg()
Const Key As String = "Hamburg"
For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row
    If InStr(1, Cells(i, 1), Key, vbTextCompare) > 0 Then Cells(i, 2) = Key & " " & Replace(Cells(i, 1), Key, "", , , vbTextCompare)
Next i
End Sub

mfg
Hey ihr beiden,

ich habe den Code jetzt jeweils in den MVB Editor eingefügt. Was genau muss ich jetzt tun damit das funktioniert?
Ich habe den Editor davor noch nie genutzt und es tut mir leid falls das eine blöde Frage ist!
Ich habe mal den Code von Elex eingefügt. Das sieht jetzt so aus wie im angehangenen Screenshot.

Mit freundlichen Grüßen,

Fabian
Hi

Überlesen?
Wenn in A1 "hafenstadt hamburg bootsfahrt" steht, schreibst du in B1 SortZelle(A1).

Gruß Elex
Hey Elex,

das habe ich genau so versucht. Aber ich glaube ich habe halt den Code den du geschrieben hast im Editor nicht aktiviert. Oder eingeschaltet oder was man damit tun muss. Ich habe den nur reinkopiert und fertig. Ich habe die Excel auch schon in eine "Excel mit Macros" umgespeichert und dann den Editor gespeichert mit deinem Code drin. Im Screenshot siehst du dann das ich alles gemacht habe wie du gesagt hast. Leider passiert aber nichts.

Ich habe auch versucht ein Gleichheitszeichen wie bei einer Formel vor SortZelle(A1) zu schreiben. Das ging auch nicht. 

Ich kann wohl glauben das ich mich blöd anstelle. Ich hoffe ich nerve nicht weil ich es nicht ganz verstehe.

Mit freundlichen Grüßen,

Fabian
Die Datei muss als xlsm oder xlsb gespeichert sein. Das = muss davor wie bei einer Formel.
Beim öffnen der Datei kommt evtl. eine Sicherheitswarnung für Makros. Dort Makros zulassen.
*gelöscht, der Mac hatte mich verwirrt …*
Aber ich glaube, dass der Code nur unter Windows lauffähig ist.

Gruß Ralf