Anzeige
Archiv - Navigation
1660to1664
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Makro zum Sortieren

Makro zum Sortieren
19.12.2018 15:24:28
Gig
https://www.herber.de/bbs/user/126218.xlsx
Hallo,
ich brauche eure Hilfe.Ich habe einen Zellbereich (G10-K19, Größe variable) bei dem Ankaufsdaten und Verkaufsdaten jeweils untereinander in einer separaten Zeile stehen.
Nun möchte ich nach dem Markieren der Range (in meinem Beispiel G10-K19) Mithilfe eines Makros die Daten der Verkaufszeile direkt hinter die Daten des Einkaufs stellen. (Siehe Datei). Danach sollen die Zeilen nach der Einkaufszeit (4. Spalte der Range) sortiert werden. Die von mir markierte Range hat meist unterschiedliche Größe.
Wer kann mir helfen?
Vielen Dank im Voraus!

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro zum Sortieren
19.12.2018 16:14:45
Daniel
Hi
im Prinzip mit diesem Code.
Sub test()
With Cells(10, 7).CurrentRegion
.Sort key1:=.Cells(1, 3), order1:=xlAscending, _
key2:=.Cells(1, 1), order1:=xlAscending, Header:=xlno
.Offset(.Rows.Count / 2, 0).Resize(.Rows.Count / 2).Cut _
Destination:=.Offset(0, .Columns.Count).Resize(1, 1)
End With
With Cells(10, 7).CurrentRegion
.Sort key1:=.Cells(1, 4), order1:=xlAscending, Header:=xlno
End With
End Sub

der Code passt sich automatisch an die datengröße an.
die Tabelle sollte vollständig von leerzellen umrandet sein.
Gruß Daniel
AW: Makro zum Sortieren
19.12.2018 20:08:22
Gig
Hallo Daniel,
vielen Dank für deine Antwort.
Im Prinzip funktioniert der Code. Aber sobald die von mir ausgewählte Tabelle(Range) mehr Spalten als im angeführten Beispiel hat, funktioniert das Ausschneiden und Einfügen nicht korrekt.
Woran kann das liegen?
Anzeige
AW: Makro zum Sortieren
19.12.2018 20:15:25
Daniel
Hi
wie wählst du die Range aus?
mein Code macht das automatisch anhand der gefüllten Zellen (so wie wenn du die erste Zelle anklickst und STRG+A drückst.
willst du den Bereich selber auswählen, dann ggf so:
Sub test()
dim rng as range
set rng = Selection ' hier den Zellbereich zuweisen
With rng
.Sort key1:=.Cells(1, 3), order1:=xlAscending, _
key2:=.Cells(1, 1), order1:=xlAscending, Header:=xlno
.Offset(.Rows.Count / 2, 0).Resize(.Rows.Count / 2).Cut _
Destination:=.Offset(0, .Columns.Count).Resize(1, 1)
End With
With rng.resize(.Rows.count / 2, .column.count * 2)
.Sort key1:=.Cells(1, 4), order1:=xlAscending, Header:=xlno
End With
End Sub
beachte, dass die Anzahl der Zeilen des ausgewählten Bereichs gerade sein muss.
(dh Überschrift falls vorhanden nicht mit auswählen)
Gruß Daniel
Anzeige
AW: Makro zum Sortieren
19.12.2018 20:41:23
Gig
Danke für deine Antwort.
Was meinst du im Code mit "Hier den Zellbereich zuweisen?
AW: Makro zum Sortieren
19.12.2018 20:48:31
Gig
Und es funktioniert nicht, wenn die von mir markierte Range nicht bei Zelle G10 beginnt.
AW: Makro zum Sortieren
19.12.2018 20:51:58
Daniel
in einer Beispieldatei war es aber so.
dann musst du den Code halt anpassen, und eben die entsprechende Zelle in den Code eintragen (linke ober Ecke des Zellbereich)
ich kann mich da nur nach der Beispieldatei richten, die du mir gibst.
wenn du die gegenüber deinen Echtdaten veränderst, musst du eben auch meinen Code dann ensprechend anpassen, dabei kann ich dir nicht helfen, weil weder Hellseher bin, noch über die technischen Möglichkeiten verfüge, mich auf deinen Rechner aufzuschalten und mir die Datei anzuschauen.
Anzeige
AW: Makro zum Sortieren
19.12.2018 20:49:03
Daniel
naja, irgendwo musst du doch angeben, welcher Zellbereich auf diese weise bearbeitet werden soll!
das passiert an dieser Stelle mit Zuweisung des Zellbereichs an eine Variable, damit du das nicht mehrfach im Code wiederholen musst, sondern einfach die Variable verwenden kannst.
da ich nicht weiß, welchen Zellbereich du so umbauen willst, habe ich einfach mal Selection genommen.
Außerdem verstehe ich nicht genau, was du willst.
mit deiner Beispieldatei hat mein Code funktioniert.
mehr kann ich für dich nicht tun, da ich nur die Informationen habe, die du mir gibst.
Gruß Daniel
Anzeige
AW: Makro zum Sortieren
19.12.2018 20:56:54
Gig
Danke Daniel für deine Antwort.
Ich möchte jenen Zellbereich bearbeiten, den ich in meinem Tabellenblatt markiert habe. Der Bereich ist immer 11 Spalten breit und hat unterschiedliche Anzahl von Zeilen (ist aber immer eine gerade Anzahl von Zellen). Und außerdem beginnt der von mir ausgewählte Datenbereich nie an der gleichen Stelle. Jeden Tag kommen neue Daten hinzu und den neuesten von mir hinzugefügten Bereich möchte ich mit dem Makro auf die beschriebene Weise bearbeiten.
AW: Makro zum Sortieren
19.12.2018 21:00:16
Daniel
na dann passt mein letzter Codevorschlag doch.
AW: Makro zum Sortieren
19.12.2018 21:09:13
Gig
Und muss ich den Zellbereich im Code jedesmal händisch zuweisen?
Anzeige
AW: Makro zum Sortieren
19.12.2018 21:10:40
Daniel
du musst den Zellbereich, der so bearbeitet werden soll, selektieren und dann den Code mit dem set rng = Selection starten
AW: Makro zum Sortieren
19.12.2018 21:21:40
Gig
Ich habe den entsprechenden Zellbereich markiert und es kommt ein Fehler bei .Rows.Count
Invalid or unqualified reference
AW: Makro zum Sortieren
19.12.2018 21:24:18
Daniel
bzw dann mit dem Code, der funktioniert:

Sub test()
Dim rng As Range
Set rng = Selection ' hier den Zellbereich zuweisen
With rng
.Sort key1:=.Cells(1, 3), order1:=xlAscending, _
key2:=.Cells(1, 1), order1:=xlAscending, Header:=xlNo
.Offset(.Rows.Count / 2, 0).Resize(.Rows.Count / 2).Cut _
Destination:=.Offset(0, .Columns.Count).Resize(1, 1)
End With
With rng.Resize(rng.Rows.Count / 2, rng.Columns.Count * 2)
.Sort key1:=.Cells(1, 4), order1:=xlAscending, Header:=xlNo
End With
End Sub
gruß Daniel
Anzeige
AW: Makro zum Sortieren
19.12.2018 21:31:42
Gig
Jetzt funktioniert es einwandfrei!!
Vielen Dank Daniel!
Schönen Abend!

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige