Live-Forum - Die aktuellen Beiträge
Datum
Titel
19.04.2024 12:23:24
19.04.2024 11:45:34
Anzeige
Archiv - Navigation
1744to1748
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

Aufteilen nach Kriterium in Datenblätter

Aufteilen nach Kriterium in Datenblätter
07.03.2020 06:45:35
Diego
Guten Tag
Ich habe nun mehrere Stunden versucht, meine bestehende Liste, bestehend aus Adressen, _ aufzuteilen, sortiert nach Strassennamen in einzelne Tabs. Am nächsten zur gewünschten Lösung, bin ich mit folgendem Makro gekommen, dass ich im Netz gefunden habe:

Sub aufteilen()
Dim Zelle1 As Range
Dim Zelle2 As Range
Dim shZiel As Worksheet
Set Zelle2 = Tabelle1.Cells(1, 1)
Zelle2.CurrentRegion.Sort key1:=Zelle2, order1:=xlAscending, Header:=xlYes
Do
Set Zelle1 = Zelle2.Offset(1, 0)
If Zelle1 = "" Then Exit 

Sub
Set Zelle2 = Zelle1.EntireColumn.Find(what:=Zelle1.Value, lookat:=xlWhole, searchdirection:= _
_
_
xlPrevious)
On Error Resume Next
Set shZiel = Sheets(Zelle1.Value)
If Err  0 Then
Set shZiel = Worksheets.Add(after:=Sheets(Sheets.Count))
shZiel.Name = Zelle1.Value
Else
shZiel.Cells.Clear
End If
On Error GoTo 0
Tabelle1.Rows(1).Copy shZiel.Cells(1, 1)
Range(Zelle1, Zelle2).EntireRow.Copy shZiel.Cells(2, 1)
Loop
End Sub

Das erste Problem liegt daran, dass im obigen Code die erste Spalte als Kriterium für die Sortierung verwendet wird. Dies konnte ich mit einer vorgängigen kleinen Umstellung der Tabelle umgehen, wäre aber sicher schöner, wenn ich wüsste welche Variabel im Makro die "Sortierungs"-Spalte bezeichnet.
Wichtiger ist aber, dass ich zusätzlich die Formatierung der Ursprungstabelle beibehalten möchte (Schift, Schriftgrössen, Rahmen, Querformat, Drucken aller Spalten auf einer Seite). Zudem möchte ich einen Header über jeder Tabelle haben, bestehend aus 8 Zeilen (inkl. Tabellenüberschrift=Spaltenbezeichnung), einer kleinen Formel in Zelle (B6), sowie einer Grafik oben rechts. Zu guter Letzt möchte ich noch eine kleine Legende in der Fusszeile jeder Tabelle haben.
Die Daten der Ursprungstabelle ändern sich immer wieder, so dass ein Makro m.E. die einzige sinnvolle Lösung darstellt.
Hoffe es kann mir jemand weiterhelfen.
LG

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Aufteilen nach Kriterium in Datenblätter
08.03.2020 09:07:46
Regina
Hi,
die Spalte, nach der Sortiert werden soll, steuerst Du hier:
Set Zelle2 = Tabelle1.Cells(1, 1)
Die zweite "1" im Cells-Objekt ist die Nummer der Spalte: 1 = A, 2 = B usw.
Was Du rausschmeißen solltest, ist diese Zeile:
On Error Resume Next
So werden alle Laufzeitfehler einfach übersprungen und Du erfährst nie, warum ein Code nicht funktioniert. Das sollte man durch eine saubere Laufzeitfehlerbehandlung ersetzen. Etwa so:
Sub aufteilen()
On Error GoTo fehler
' Dein Code
Exit Sub
fehler:
MsgBox Err.Number & vbNewLine & Err.Description
End Sub
Für Deine anderen Wünsche würde ich erstmal den Makrorekorder bemühen und dann gucken, was Du für Dich daraus übernehmen kannst. Wenn dann nicht alles klappt, kannst Du Dich ja noch mal melden.
Gruß Regina
Anzeige
AW: Aufteilen nach Kriterium in Datenblätter
09.03.2020 09:23:11
Diego
Hallo Regina
Erstmal herzlichsten Dank für Deine Hilfe. Werde es heute Abend gleich ausprobieren.
LG
Diego
AW: Aufteilen nach Kriterium in Datenblätter
11.03.2020 20:53:54
Diego
Habe den neuen Code zusammen mit meinem alten Code eingefügt und erhalte nun aber immer folgende Fehlermeldung (siehe auch Anhang): Syntaxfehler
Was mache ich falsch?
Sub aufteilen()
On Error GoTo fehler
Dim Zelle1 As Range
Dim Zelle2 As Range
Dim shZiel As Worksheet
Set Zelle2 = Tabelle1.Cells(1, 3)
Zelle2.CurrentRegion.Sort key1:=Zelle2, order1:=xlAscending, Header:=xlYes
Do
Set Zelle1 = Zelle2.Offset(1, 0)
If Zelle1 = "" Then Exit
Sub
Set Zelle2 = Zelle1.EntireColumn.Find(what:=Zelle1.Value, lookat:=xlWhole,  _
searchdirection:= _
_
_
xlPrevious)
On Error Resume Next
Set shZiel = Sheets(Zelle1.Value)
If Err  0 Then
Set shZiel = Worksheets.Add(after:=Sheets(Sheets.Count))
shZiel.Name = Zelle1.Value
Else
shZiel.Cells.Clear
End If
On Error GoTo 0
Tabelle1.Rows(1).Copy shZiel.Cells(1, 1)
Range(Zelle1, Zelle2).EntireRow.Copy shZiel.Cells(2, 1)
Loop
Exit Sub
fehler:
MsgBox Err.Number & vbNewLine & Err.Description
End Sub

Anzeige
AW: Aufteilen nach Kriterium in Datenblätter
11.03.2020 20:55:24
Diego
Userbild
AW: Aufteilen nach Kriterium in Datenblätter
11.03.2020 21:50:47
Regina
Hi, das Sub gehört direkt hinter das Exit, in die gleiche Zeile:
 If Zelle1 = "" Then Exit Sub
Gruß Regina

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige