Word sortieren: nach ABC1 kommt ABC10

Hallo!

Gibt es eine Möglichkeit Word anders sortieren zu lassen? Ich will folgende Sortierung haben:

ABC1
ABC2
ABC3
ABC4
ABC5
ABC6
ABC7
ABC8
ABC9
ABC10
ABC11

Jedoch bekomme ich dies hier:

ABC1
ABC10
ABC11
ABC2
ABC3
ABC4
ABC5
ABC6
ABC7
ABC8
ABC9

Ich weiß ich könnte ABC01 verwenden, jedoch ist das für meinen Fall unpassend. Gibt es noch andere Möglichkeiten außer händisch zu sortieren?

LG
Franz

Gibt es eine Möglichkeit Word anders sortieren zu lassen? Ich
will folgende Sortierung haben:

Ich weiß ich könnte ABC01 verwenden, jedoch ist das für meinen
Fall unpassend. Gibt es noch andere Möglichkeiten außer
händisch zu sortieren?

Hallo Franz,

ich weiß nicht ob Word Zeilen sortieren kann. Also gehe ich mal von einer Spalte in einer Tabelle aus.
Ist das korrekt?

Wenn es da mehrere Spalten gibt, sollen die entsprechend der sortierten Spalte mitsortiert werden oder soll nur die eine Spalte sortiert werden und die Werte der anderen Spalten bleiben am Platz?

Zu ABC10

Ist es bei allen Begriffen so, vorne kommen Buchstaben, danach nur Zahlen?
Anders gefragt, von rechts kommend kommen dann nur Ziffern bis halt der erste Buchstabe, hier das C kommt?

Gruß
Reinhard

Hallo Reinhard!

ich weiß nicht ob Word Zeilen sortieren kann. Also gehe ich mal von einer Spalte in einer Tabelle aus.
Ist das korrekt?

Ja, eine Tabelle mit zwei Spalten.

Wenn es da mehrere Spalten gibt, sollen die entsprechend der sortierten Spalte mitsortiert werden oder soll nur die eine Spalte sortiert werden und die Werte der anderen Spalten bleiben am Platz?

Sie sollen mitsortiert werden (also die ganze Zeile, wobei die erste Spalte das Sortierelement ist)

Ist es bei allen Begriffen so, vorne kommen Buchstaben, danach nur Zahlen?
Anders gefragt, von rechts kommend kommen dann nur Ziffern bis halt der erste Buchstabe, hier das C kommt?

Ja, nur Buchstaben, danach Zahlen. Von rechts kommend sind zuerst die Ziffern, danach die Buchstaben. (Bei einem Element habe ich im Moment nur Buchstaben, aber das muss ich noch ändern …)

LG
Franz

Hallo Franz,

auch der Explorer sortiert wie Word. Das kann man schwerlich ändern.

Erste Frage: muß das denn automatisch sortiert werden? Wenn ja, könntest Du das fehlerhafte Sortieren hinnehmen und manuell ein wenig nacharbeiten - kommt allderings auf die Anzahl der Zeilen an. Vorgehensweise (in Neusprech abgefaßt):

  • Word packt die Nummern 10 bis 19 zuverlässig zwischen 1 und 2, (genauso wie 20 bis 29 zwischen 2 und 3).
  • Markierst Du die Z ell en von 10 bis 19.
  • Drückst Du Alt, Shift, Cursor_unten gleichzeitig. a) die Tabellenz eil en werden markiert, b) der ganze Block wird um eine Tabellenzeile nach unten bewegt.
  • Machst Du weiter bis Sortierung richtig.
  • Machst Du weiter bis alle zweistelligen Nummern richtig.

Zweite Frage: die Nummern ABC1, ABC2 gibst Du von Hand ein. Muß das sein? Wenn nein, laß doch Word numerieren. Vorgehensweise:

  • Gibst Du ein ABC
  • Drückst Du Strg+F9. Ein Feldklammernpaar erscheint, Cursor steht drin.
  • Tippst Du ein Seq A.
  • Drückst Du F9. Das Feldergebnis wird angezeigt.
  • Nimmst Du ABC{Seq A} in die Zwischenablage (Strg+C) und fügst es in jeder Tabellenzeile ein (Strg+V).
  • Sortierst Du Deine Tabelle manuell mit der oben vorgestellten Tastenkombination.
  • Sollte die Numerierung nicht stimmen, müssen die Felder aktualisiert werden. Drückst Du Alt+Shift+5 (die 5 auf dem Zehnerblock}, dann F9.

HTH

Markus
______________________
Und Sterne sammel ich noch immer.

Und ich vergaß:

Dritte Frage: muß ABC1 in einer Zelle stehen? Wenn nein, mach’ doch ABC in die erste Spalte, die Zahlen in die zweite, den zugehörigen Text in die dritte. Dann funktioniert die Sortierung problemlos.

HTH.

Markus
_______________
U…

Und ich vergaß:

Falls Dritte Frage bejaht wird:

  • Schreibst Du ABC an irgendeine Stelle, wo es nicht gedruckt wird.

  • Markierst Du ABC

  • Weist Du (mit Strg+F5) der Markierung eine Textmarke, nennen wir sie Nr, zu

  • Schreibst Du Deine Zahlen, ohne ABC, in die Zellen.

  • Fügst Du vor der Zahl einen Querverweis auf die Testmarke ein

    { Ref Nr }

Dann klappt die Sortierung problemlos. Der Querverweis wird nämlich ignoriert.

HTH.

Markus
______________
U…

(Bei einem Element

habe ich im Moment nur Buchstaben, aber das muss ich noch
ändern …)

Hallo Franz,

das Element ist mir egal, denn wenn die zahl fehlt wird es normal mitsortiert. Ich kenne mich in Word nicht aus um dir Word-Lösungen wie Markus anbieten zu können.

In Word-Vba klappt es schon einen Tick besser.
Der nachfolgende Code ist sicher keine Augenweide für einen Word-Vbaler, naja, Hauptsache er klappt :smile:

Erstelle mal ein Beispieldokument mit einer zweispaltigen Tabelle.
Die füllst du in Spalte 1 so aus wie du es in der Anfrage geschrieben hast oder wie deine daten halt sind.
In der zweiten Spalte kannste ja von oben nach unten a,b,c oder 1,2,3 o.ä. eintragen um das Sortierergebnis kontrollieren zu können.

Wenn das Dokument erstellt ist und das aktive Dokument ist läßt du über Alt+F8 das Makro „Sortier“ aus.
Wenn alles bei dir klappt müßte dann ein neues Dolkument erstellt sein mit dieser Tabelle und die ist sortiert.

Noch in der Sortierung die du nicht möchtest aber das spielt erstmal keine Rolle.
Sorry, muß mich in Word-Vba immer erstmal vortasten.

Um den Code benutzen zu können, vorher
Alt*F11, Einfügen—Modul, Code reinkopieren, VB-Editor schließen.

Option Explicit

Sub Sortier()
Selection.Tables(1).Select
Selection.Copy
Documents.Add DocumentType:=wdNewBlankDocument
Selection.Paste
Selection.Tables(1).Select
Selection.Sort ExcludeHeader:=False, FieldNumber:="Spalte1", SortFieldType \_
 :=wdSortFieldAlphanumeric, SortOrder:=wdSortOrderAscending, FieldNumber2 \_
 :="", SortFieldType2:=wdSortFieldAlphanumeric, SortOrder2:= \_
 wdSortOrderAscending, FieldNumber3:="", SortFieldType3:= \_
 wdSortFieldAlphanumeric, SortOrder3:=wdSortOrderAscending, Separator:= \_
 wdSortSeparateByTabs, SortColumn:=False, CaseSensitive:=False, LanguageID \_
 :=wdEnglishUS
End Sub

Gruß
Reinhard

1 „Gefällt mir“

Alt+F11 o.w.T.

Hallo Reinhard!

An VBA habe ich noch gar nicht gedacht. Ich hab das Skript mal reduziert:

Option Explicit

Sub Sortier()
Selection.Tables(1).Select
Selection.Sort ExcludeHeader:=False, \_
 FieldNumber:="Spalte1", SortFieldType:=wdSortFieldAlphanumeric, SortOrder:=wdSortOrderAscending, \_
 FieldNumber2:="Spalte2", SortFieldType2:=wdSortFieldAlphanumeric, SortOrder2:=wdSortOrderAscending
End Sub

Man müsste jetzt noch sowas wie Selection.Tables(1).Col(1).Row(x).Select machen, den String in zwei Strings zerlegen (eigene Funktion), und das Ergebnis dann in eine eigene Sortierfunktion packen, die das Sortieren (Verschieben) dann auch richtig durchführt.

Aber irgendwie erscheint mir, dass ein bisschen zu viel Aufwand, wenn man nicht gerade ein VBA-Experte ist … Deshalb sag ich Danke für deine Hilfe!

LG
Franz

Hi Martkus!

muß das denn automatisch sortiert werden?

Ja, wäre ansonsten zu viel Aufwand.

könntest Du das fehlerhafte Sortieren hinnehmen und manuell ein wenig nacharbeiten

Scheint die einfachste und schnellste Lösung zu sein.

Drückst Du Alt, Shift, Cursor

Netter Shortcut. Kannte ich noch nicht :wink:

die Nummern ABC1, ABC2 gibst Du von Hand ein. Muß das sein?

Ja, da die Nummern meistens für Jahreszahlen stehen. Trotzdem Danke für den Tip (wollte das woanders mal machen und mir fiel Seq A nicht ein.

LG
Franz

Hi Markus!

Ich finde es toll, dass du dir so viele Gedanken machst. Da es eine zusammengehörige Referenz ist, muss das zusammen bleiben.

LG
Franz

Interessante Ansätze auf die du kommst :wink: Ich müsste dann aber die Zahlen an mehreren Stellen konsistent halten. Ginge auch aber wenn irgendwo mal was geändert wird, verkompliziert sich die Sache … Deshalb bleibe ich beim jetztigen System und sortiere manuell nach. Aber Danke für deine Hilfe.

LG
Franz

PS: Der Explorer sortiert es bei mir richtig!

Strg+F5 geht irgendwie nicht.

Aber irgendwie erscheint mir, dass ein bisschen zu viel
Aufwand, wenn man nicht gerade ein VBA-Experte ist … Deshalb
sag ich Danke für deine Hilfe!

Hallo Franz,

wieso ist da ein großer Aufwand?
Mein Problem ist daß ich mich in Word und Word-Vba nicht auskenne.
Deshalb bin ich da schwr gehandicapt.
Den Lösungscode als Pseudocode habe ich längst im Kopf bzw. der ist ja gar nicht schwer von der logischen Abfolge gesehen.

Ja, es wird so oder so ähnlich wie du schon sehr gut mitgedacht hast, ablaufen, also als reine Vba-Aufgabe gesehen nix wildes für mich.
In Excel-Vba wäre ich da x-Mal schneller im Code basteln weil ich da meist weiß wie man die Objekte anspricht also referenziert.

In Word halt nicht oder nur ganz wenige.

Um zu verdeutlichen was ich meine, ich will angenommen aus einem Document nur die Seite 7 herauskopieren, da wäre es wunderhübsch wenn ich das so schreiben könnte:

ActiveDocument.Pages(7).Copy

Geht halt nicht so :frowning:
Und jetzt herauszufinden kostet mich schlichtweg nur zeit. Geld für Bücher habe ich keine. Also muß ich für so eine Winzigkeit halt im Link der Brettseite suchen oder googeln.

Dabei würde mir die Ansicht eines Word-Codes der eine einzelne Seite referenziert dicke reichen :frowning:

Egal, ist meine Sache.

Jedenfalls klappt der Code bei dir wohl. Okay dann bastle ich mal am WE das andere was noch fehlt.

Übrigens Danke daß du meinen Code gekürzt hast und auch noch paar andere zeilen Code geschrieben hast, habs zwar noch nicht gesichtet aber sowas hilft mir immer weiter.

Schad daß hier im Brett so wenig Code gepostet wird :frowning:((

Gruß
Reinhard

Aber irgendwie erscheint mir, dass ein bisschen zu viel
Aufwand, wenn man nicht gerade ein VBA-Experte ist … Deshalb
sag ich Danke für deine Hilfe!

Hallo Franz,

mache sicherheitshalber eine Kopie deiner Original-Doc. In der baust du den Code ein und testest ihn dort.
So wie er ist legt er jedes Mal ein neues Doc an und zeigt da die sortierte Tabelle.

Wenn du mit allem zufrieden bist, baust du ihn in deine Original-Doc ein, entfernst dann die Stern-Zeilen und alles zwischen ihnen, dann sortiert er direkt die Doc in der er steht.

Hier eine mit Word 2000 funktionierende beispiel-Doc:
http://www.file-upload.net/download-3464713/TabelleE…

Gruß
Reinhard

in ein Standardmodul, z.B. Modul1:

Option Explicit

Sub Sortier()
'Bei Extras--Verweise unbedingt Verweis auf MS Forms X.0 Object Libraray setzen !!!
On Error GoTo hell
Application.ScreenUpdating = False
'\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
ActiveDocument.Tables(1).Range.Copy
Documents.Add.Content.Paste
'\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
ActiveDocument.Tables(1).Columns(1).Select 'Hier die gewünschte strSpalte angeben
Selection.Copy
Call ZahlWandeln(False)
Selection.Paste
Selection.Tables(1).Select
Selection.Sort ExcludeHeader:=False, FieldNumber:="Spalte1", SortFieldType \_
 :=wdSortFieldAlphanumeric, SortOrder:=wdSortOrderAscending
Selection.Tables(1).Columns(1).Select
Selection.Copy
Call ZahlWandeln(True)
Selection.Paste
hell:
Application.ScreenUpdating = True
If Err.Number 0 Then MsgBox Err.Number & vbCr & Err.Description
End Sub

Sub ZahlWandeln(ByVal NurZahl As Boolean)
Dim MyData As New DataObject, strSpalte As String, S, N As Long, Pos As Integer
MyData.GetFromClipboard
S = Split(MyData.GetText(1), Chr(13) & Chr(10))
For N = LBound(S) To UBound(S) - 1
 For Pos = 1 To Len(S(N))
 If Asc(Mid(S(N), Pos, 1)) 
1 „Gefällt mir“

Hallo Reinhard!

Irgendwie bin ich von deinem Beitrag irretiert. Ich finde es super, dass du mir hilfst. Ich habe aber erwähnt, dass mir deine Hilfe schon groß genug war. Nun zu deinen Punkten:

wieso ist da ein großer Aufwand?

Weil ich von VBA keine Ahnung habe. Ich müsst mich erst komplett in VBA einarbeiten …

ich will angenommen aus einem Document nur die Seite 7 herauskopieren

Auf die Schnelle habe ich nur das gefunden: http://www.programmersheaven.com/mb/vba/270670/27067…

Dim i As Integer
Dim totalPages As Integer
Dim bmRange As Range

totalPages = Selection.Information(wdNumberOfPagesInDocument)

For i = 1 To totalPages
 Set bmRange = ActiveDocument.Bookmarks("\Page").Range
 bmRange.Copy

 'your other code here working off the bmRange object
Next i

Und jetzt herauszufinden kostet mich schlichtweg nur zeit. Geld für Bücher habe ich keine. Also muß ich für so eine Winzigkeit halt im Link der Brettseite suchen oder googeln.

Ich kann dich gut verstehen, da ich jetzt VBA auch nicht unbedingt lernen wollte.

Dabei würde mir die Ansicht eines Word-Codes der eine einzelne Seite referenziert dicke reichen :frowning:

Meinst du sowas?

Selection.GoTo What:=wdGoToPage, Which:=lNextPage
Where lNextPage is the page number

Von http://en.kioskea.net/forum/affich-100713-go-to-next…

Egal, ist meine Sache.

Nein es ist nicht egal. Außerdem ist es ein Problem was mich betrifft.

Jedenfalls klappt der Code bei dir wohl. Okay dann bastle ich mal am WE das andere was noch fehlt.

Ich finde es toll, dass du dir so viel Mühe gibst! Echt!

Übrigens Danke daß du meinen Code gekürzt hast und auch noch paar andere zeilen Code geschrieben hast, habs zwar noch nicht gesichtet aber sowas hilft mir immer weiter.

Sorry. Ich habe ihn gekürzt, weil ich es für mich lesbarer machen wollte (und schauen wollte wie es funktioniert). Leider habe ich von VBA keine Ahnung.

Schad daß hier im Brett so wenig Code gepostet wird

Kennst du andere Seiten? Vielleicht ist dort mehr los bezüglich VBA.

Dein Post hat mich sehr betrübt. Aber es zeigt halt, dass von meiner Seite (und anscheinend vielen anderen Usern auch) sehr wenig kommt. Du investierst deine Zeit um eine funktionsfähige Lösung zu erstellen, engagierst und bemühst dich. Ich kann dir deine Bemühungen und Leistungen nur hoch anrechnen. Leider fällt mir dazu nur ein dich ein bisschen zurückzunehmen und nicht immer und jeden zu helfen. Außerdem musst es du auch nicht in dem Umfang wie hier betreiben. Nichtsdestotrotz hoffe ich, dass du auch in Zukunft das helfen nicht aufgibst, sondern es mit Maß und Ziel angehst.

Alles Gute,
Franz

Hi Reinhard!

Wow! Respekt! Du hast dir echt viele Gedanken gemacht.

Ich hab das mal probiert. Mit dem Test-Dokument funktioniert deine Lösung superb. Bei meinem Dokument weiß ich nicht wie ich die richtige Tabelle auswähle (bzw. herausfinde welche Nr. sie hat). Aber das ist nur eine Anmerkung von mir, keine Aufforderung zum Perfektionieren! Ich werde mal sehen was sich machen lässt.

LG
Franz

Grüezi Franz

Schad daß hier im Brett so wenig Code gepostet wird

Kennst du andere Seiten? Vielleicht ist dort mehr los
bezüglich VBA.

Ohne hier nun auf Abwerbung machen zu wollen gibt es hier ein sehr detailliertes Forum das spezifisch auf die einzelnen Office-Applikationen eingeht und dies auch noch unterteilt:

http://www.office-loesung.de/index2.php

Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -