Anzeige
Archiv - Navigation
1852to1856
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

VBA: Ausglich von unregelmäßiger Anzahl

VBA: Ausglich von unregelmäßiger Anzahl
26.10.2021 06:05:37
unregelmäßiger
Einen schönen guten Morgen!
Ich darf eine Tabelle mit mehreren 10000 Einträgen aufbereiten / bearbeiten.
Leider stehe ich vor dem Riesenproblem, dass die angelieferten Daten leider nicht zu 100% "symmetrisch" sind.
Normalerweise fängt in jeder 6. Zeile ein neuer Datensatz an - kann ich auch wunderbar über die INDEX Funktion abgreifen und im Weiteren bearbeiten.
Leider gibt es alle paar Hundert Einträge einen Versatz in den Daten. Dann ist der nächste Datensatz plötzlich nicht 6 Zeilen weiter sondern nur noch 4 Zeilen weiter.
Zur Veranschaulichung:
https://i.ibb.co/4TJtY86/problemexcel.jpg

https://www.herber.de/bbs/user/148789.xlsx
Kann ich mittels VBA überprüfen, ob der Abstand zwischen "WP"-beginnenden Zellinhalten 6 Zeilen beträgt und falls es nur 4 Zeilen sind, 2 Leerzeilen hinzufügen, damit der Abstand wieder 6 beträgt?
Habt vielen lieben Dank und Euch einen schönen Tag!
Marco

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA: Ausglich von unregelmäßiger Anzahl
26.10.2021 09:22:06
unregelmäßiger
Moin,
sowas in der Art hatte ich auch mal. Aber müssen unbedingt leere Zeilen eingefügt werden? Wenn in der Hilfsspalte A jetzt nicht diese Formel stünde (http://www.office-loesung.de/p/viewtopic.php?f=166&t=871602), sondern in den Bereich A1:A6 Einsen eingetragen und in Zelle A7 diese Formel eingetragen und "runtergezogen" würde:
=A6+WENN(LINKS(B7;2)="WP";1;0)
wären die Datensätze schon mal durchnummeriert.
Die Spalte wird kopiert und als "Inhalte eingefügt". Dann zweimal sortieren:
1) Alle Daten: nach Spalte [B] aufsteigend und Spalte [A] aufsteigend.
Nun sind leere Zeilen schon mal unten.
2) Nur die außer in Spalte [A] nicht-leeren Zeilen: nach Spalte [A] aufsteigend und Spalte [B] absteigend.
Dann sollte das dabei rausgekommen sein:
[A] [B] [C] [D]
1 WP 180608 59172 Datensatz 1
1 Gemeinde
2 WP 180608 59227 Datensatz 2
2 Gemeinde
3 WP 180609 59341 Datensatz 3
3 Gemeinde
4 WP 180609 59345 Datensatz 4
4 Gemeinde
5 WP 180609 59359 Datensatz 5
5 Gemeinde
Ist jetzt nicht unmittelbar die Lösung für Deine Fragestellung, aber so wärst Du die leeren Zeilen los, was das arbeiten mit 10.000en Zeilen erheblich erleichtert. Fand ich jedenfalls... ;-)
Grüße
Michael
Anzeige
AW: VBA: Ausglich von unregelmäßiger Anzahl
26.10.2021 09:30:58
unregelmäßiger
Hallo
versuch es mal so
in ein Modul

Sub Plus2()
Dim LR As Long, i As Long, WPu As Long
Dim Soll As Integer, Abst As Integer
Soll = 6
With Sheets("Tabelle1")
LR = .Cells(.Rows.Count, "A").End(xlUp).Row 'letzte Zeile der Spalte
For i = LR To 1 Step -1
If Left(.Cells(i, 1), 3) = "WP " Then
If WPu  0 Then 'nicht bei erstem Treffer
Abst = WPu - i
If Abst  Soll Then
.Rows(WPu).Resize(Soll - Abst).Insert
End If
WPu = i
Else
WPu = i
End If
End If
Next
End With
End Sub
LG UweD
AW: VBA: Ausglich von unregelmäßiger Anzahl
26.10.2021 10:00:21
unregelmäßiger
Hallo nochmal
hier noch inkl. Fehlerbehandlung, falls es mehr als 6 sind

Sub Plus2()
Dim LR As Long, i As Long, WPu As Long
Dim Soll As Integer, Abst As Integer
Soll = 6
With Sheets("Tabelle1")
LR = .Cells(.Rows.Count, "A").End(xlUp).Row 'letzte Zeile der Spalte
For i = LR To 1 Step -1
If Left(.Cells(i, 1), 3) = "WP " Then
If WPu  0 Then 'nicht bei erstem Treffer
Abst = WPu - i
If Abst  Soll Then
MsgBox "Fehler bei Zeile " & i & " - " & WPu & vbLf & _
"Abstand= " & Abst
End If
WPu = i
Else
WPu = i
End If
End If
Next
End With
End Sub
LG UweD
Anzeige
AW: VBA: Ausglich von unregelmäßiger Anzahl
26.10.2021 10:52:42
unregelmäßiger
Hallo Uwe!
Das ist ein Traum - vielen, vielen lieben Dank!!! Du hast mir den Tag gerettet!
Eine Nachfrage dennoch: Was müsste ich denn ändern, damit es nicht in Reihe A nach dem WP sucht sondern in Reihe E ?
(.Rows.Count, "A") in (.Rows.Count, "E") zu ändern, hat leider nicht geholfen O:-)
Danke und LG
AW: VBA: Ausglich von unregelmäßiger Anzahl
26.10.2021 11:10:59
unregelmäßiger

If Left(.Cells(i, 1), 3) = "WP " Then
ändern in

If Left(.Cells(i, 5), 3) = "WP " Then
Gruß Pierre
AW: VBA: Ausglich von unregelmäßiger Anzahl
26.10.2021 11:15:24
unregelmäßiger
Hallo
Prima, das es klappt.
Hab es variabel gestaltet.

Sub Plus2()
Dim LR As Long, i As Long, WPu As Long, Sp As Integer
Dim Soll As Integer, Abst As Integer, Antwort
Soll = 6
Sp = 5 'SpalteE  mit WP_123
With Sheets("Tabelle1")
LR = .Cells(.Rows.Count, Sp).End(xlUp).Row 'letzte Zeile der Spalte
For i = LR To 1 Step -1
If Left(.Cells(i, Sp), 3) = "WP " Then
If WPu  0 Then 'nicht bei erstem Treffer
Abst = WPu - i
If Abst  Soll Then
Antwort = MsgBox("Fehler bei Zeile " & i & " - " & WPu & vbLf & _
"Abstand= " & Abst & vbLf & vbLf & _
"Differenz Löschen ", vbYesNo)
If Antwort = vbYes Then
.Rows(WPu - Abst + Soll).Resize(Abst - Soll).Delete
End If
End If
WPu = i
Else
WPu = i
End If
End If
Next
End With
End Sub
LG UweD
Anzeige
AW: VBA: Ausglich von unregelmäßiger Anzahl
26.10.2021 09:34:21
unregelmäßiger
Hallo Marco,
um dir da helfen zu können, musst du in den Zeilen schon etwas mehr Daten liefern, wir brauchen ja mögliche Unterscheidungsmerkmale. Und ein paar mehr Zeilen wären auch nicht schlecht, so um die 100.
Servus
AW: VBA: Ausglich von unregelmäßiger Anzahl
26.10.2021 09:49:10
unregelmäßiger
Hallo Marco,
nimm Uwe's Vorschlag, der ist perfekt!
Servus

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige