Sortierung ungewöhnlich

Hallo,

ich möchte einen Text sortieren lassen, aber nicht wie üblich nach Zeilen, sondern nach Worten bzw. nach Buchstaben (obwohl das zunächst unsinnig erscheint, brauche ich sowas!). Es sollten also nach der Sortierung gleiche Wörter oder gleiche Buchstaben nacheinander oder übereinander erscheinen.

Geht so etwas überhaupt?

Gruß

Bona

ich möchte einen Text sortieren lassen, aber nicht wie üblich
nach Zeilen, sondern nach Worten bzw. nach Buchstaben (obwohl
das zunächst unsinnig erscheint, brauche ich sowas!). Es
sollten also nach der Sortierung gleiche Wörter oder gleiche
Buchstaben nacheinander oder übereinander erscheinen.

Hallo Bona,

zeig mal die ersten Einträge der sortierten „Liste“ wenn der Text wie nachfolgend wäre.

Gruß
Reinhard

Franz jagt im komplett verwahrlosten Taxi quer durch Bayern. Franz jagt im komplett verwahrlosten Taxi quer durch Bayern. Franz jagt im komplett verwahrlosten Taxi quer durch Bayern. Franz jagt im komplett verwahrlosten Taxi quer durch Bayern.

Hallo Reinhard (gerade wollte ich „Franz“ schreiben *g*),

ich weiß, was du meinst. Da stünde dann

durch
durch
durch
durch
Franz
Franz
Franz
Franz usw.

bzw.

aaaa…bbb… usw.

Ich weiß, dass das seltsam erscheint, aber genau so eine Sortierung brauche ich in der Tat (es geht in meinem Fall nicht um Buchstaben, wohl aber um sortierbare Zeichen).

Herzliche Grüße

Bona

Hallo,

ich möchte einen Text sortieren lassen, aber nicht wie üblich
nach Zeilen, sondern nach Worten bzw. nach Buchstaben (obwohl
das zunächst unsinnig erscheint, brauche ich sowas!). Es
sollten also nach der Sortierung gleiche Wörter oder gleiche
Buchstaben nacheinander oder übereinander erscheinen.

Das würde ich mit Excel probieren. Als csv speichern, in Excel importieren mit Leerstelle als Trennzeichen, und dann sortieren. Kommt halt drauf an, wieviele Worte es sind.

Sonst gibt es sicher ein Kommandozeilenprogramm, das das macht, aber das bist du bei „Textverarbeitung“ falsch.

Cheers, Felix.

Wörter eines Textes sortieren

Ich weiß, dass das seltsam erscheint, aber genau so eine
Sortierung
brauche ich in der Tat (es geht in meinem Fall
nicht um Buchstaben, wohl aber um sortierbare Zeichen).

Hallo Bona,

nimm ein neues leeres Dokument zum Testen.
Kopier/Schreib da Text rein, z.B. mit
=rand()
und Enter :smile:

Alt+F11, klicke links einmal auf dein Dokument, erkennbar an „Project(Dateiname)“, dann oben Einfügen—Modul.
Dann erscheint links „Modul1“ o.ä., darauf einen Doppelklick.
Dort den nachstehenden Code reinkopieren, Editor schließen.

Option Explicit
'
Sub Sortieren()
Dim Wort, colC As New Collection, C As Long, myTable, W As Long
On Error Resume Next
Selection.WholeStory
For W = 1 To Selection.Words.Count
 Wort = Selection.Words(W)
 Wort = Replace(Replace(Replace(Wort, ".", ""), ",", ""), " ", "")
 If Wort "" Then colC.Add Key:=Wort, Item:=Wort
Next W
Selection.HomeKey Unit:=wdStory
Set myTable = ActiveDocument.Tables.Add(Range:=Selection.Range, NumRows:=colC.Count, NumColumns \_
 :=1, DefaultTableBehavior:=wdWord9TableBehavior, AutoFitBehavior:= \_
 wdAutoFitFixed)
For C = 1 To colC.Count
 Selection.TypeText Text:=colC(C)
 Selection.MoveRight Unit:=wdCell
Next C
myTable.Sort
myTable.Rows.ConvertToText Separator:=wdSeparateByParagraphs, NestedTables:=True
End Sub

Gruß
Reinhard

1 „Gefällt mir“

Hallo Reinhard,

das sieht ja sehr interessant aus. Im Moment klappt es noch nicht, vermutlich weil ich den letzten Schritt nicht verstehe (sorry, bitte für Dumme wie mich zu erklären!).

Alt+F11, klicke links einmal auf dein Dokument, erkennbar an
„Project(Dateiname)“, dann oben Einfügen—Modul.
Dann erscheint links „Modul1“ o.ä., darauf einen Doppelklick.

Bis hierher klappt es (ich habe diese Funktion NOCH NIE gesehen).

Dort den nachstehenden Code reinkopieren, Editor schließen.

So, und was bedeutet das jetzt? Ich habe den Code reinkopiert, gespeichert … und dann? Wenn ich den Editor jetzt schließe, ist alles wie vorher mit dem Testdokument, auch die Sortierfunktion. Aber vermutlich muss ich die gar nicht anwenden, oder? Wie wende ich aber dann das Programm auf den Text an? Wo ist mein Denkfehler?

Gruß

Bona

Hallo Bona,

Bis hierher klappt es (ich habe diese Funktion NOCH NIE
gesehen).

Alt+F11 ist der Kurztastenkürzel für:
Extras—Makros—Visual Basic-Editor.

Wie wende ich aber dann das Programm auf den
Text an?

Sorry, ich vergaß das zu erwähnen.

In Word dann Alt+F8, den Namen des Codes auswählen, dann „Ausführen“…

Gruß
Reinhard

1 „Gefällt mir“

Super! Zusatzfrage
Hallo Reinhard,

super, danke, es klappt, jedenfalls mit Wörtern.
Kann man das Programm auch so modifizieren, dass es mit Buchstaben klappt? Das wäre das i-Tüpfelchen! :smile:

Gruß

Bona

HAT SICH ERLEDIGT
Hallo Reinhard,

das Problem ist gelöst. Danke sehr für deine Hilfe!

Gruß

Bona

super, danke, es klappt, jedenfalls mit Wörtern.
Kann man das Programm auch so modifizieren, dass es mit
Buchstaben klappt? Das wäre das i-Tüpfelchen! :smile:

Hallo Bona,

vielleicht so:

Sub Sortieren2()
Dim Wort As String, colC As New Collection, C As Long, myTable, W As Long
Dim B As Long
On Error Resume Next
Selection.WholeStory
For W = 1 To Selection.Words.Count
 Wort = Selection.Words(W)
 Wort = Replace(Replace(Replace(Wort, ".", ""), ",", ""), " ", "")
 Wort = Replace(Replace(Replace(Wort, Chr(10), ""), Chr(13), ""), Chr(9), "")
 For B = 1 To Len(Wort)
 colC.Add Key:=Mid(Wort, B, 1), Item:=Mid(Wort, B, 1)
 Next B
Next W
Selection.HomeKey Unit:=wdStory
Set myTable = ActiveDocument.Tables.Add(Range:=Selection.Range, NumRows:=colC.Count, NumColumns \_
 :=1, DefaultTableBehavior:=wdWord9TableBehavior, AutoFitBehavior:= \_
 wdAutoFitFixed)
For C = 1 To colC.Count
 Selection.TypeText Text:=colC(C)
 Selection.MoveRight Unit:=wdCell
Next C
myTable.Sort
myTable.Rows.ConvertToText Separator:=wdSeparateByParagraphs, NestedTables:=True
End Sub

Gruß
Reinhard

Fehlermeldung
Hallo,

„kann im Haltemodus nicht ausgeführt werden“ - was auch immer das bedeutet … :smile:

Gruß

Bona

Andere Fehlermeldung
Hallo,

„Fehler beim Kompilieren. Syntaxfehler“ und dann mit gelber Farbe gekennzeichnet die überschrift „Sub Sortieren2 ()“ …

Gruß

Bona

„kann im Haltemodus nicht ausgeführt werden“ - was auch immer
das bedeutet … :smile:

Hallo Bona,

ich weiß das auch nicht genau. Kommt bei bestimmten Aufeinanderfolgen von Codezeilen, bedeutet irgendwie sowas wie, kann jetzt im Debugmodus (F8) nicht anhalten, das kann ich nur davor oder dahinter.
Man stört quasi Vba an der Arbeit :smile:

Ist natürlich nervend wenn man Fehler sucht, also die fehlerhafte Zeile wissen will.

Öfters treten seltsame Fehler auf wenn man hier Code rauskopiert und im Editor einfügt.
Das liegt an den Zeilenumbrüchen wie in der Zeile von
Set myTable = …

Tip, schmeiß im Editor hinten in den Zeilenfragmenten die Unterstriche raus, sodaß da wieder eine sehr lange Zeile entsteht.
Dann, lange Zeilen sind gruselig zu lesen, breche manuell die Zeiel wieder um.
An den Bruchstellen ein leerzeichen einfügen, dann einen Unterstrich, dann wieder ein leerzeichen, dann Enter.

Ansonsten, immer schwierig aus der Ferne zu deuten was bei dir vorliegt, bei mir hat der Code funktioniert.
Hier ist eine Doc (erstellt mit Word2000) wo es klappt.

Gruß
Reinhard

1 „Gefällt mir“

Hallo Reinhard,

eine Doc (erstellt mit Word2000) wo es klappt.

wow! Danke! Klappt!

Gruß

Bona