Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1372to1376
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Datenbereinigen

Daten_bereinigen
10.08.2014 07:20:08
Lammi

Hallo zusammen,
ich muss immer wieder größere Datenmengen bearbeiten.
In den Datensätzen habe ich aber häufig Daten die ich nicht benötige.
Diese Datenspalten oder auch Datenzeilen möchte ich mittels eines Makros löschen.
Basis ist ein Arbeitsblatt welches die Daten enthält und ein Arbeitsblatt welches die Merkmale der zu löschenden Datensätze aufführt.
Die Merkmale ob Zielen- oder Spaltenlöschung stattfindet habe ich im Arbeitsblatt : Daten_bereinigen ausgewiesen!
Alle Merkmale können an beliebiger Stelle stehen.
https://www.herber.de/bbs/user/91995.xlsx
Gruß
Lemmi

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

Betreff
Datum
Anwender
Anzeige
AW: Daten_bereinigen
10.08.2014 07:41:12
Hajo_Zi
wann steht ein wert in einer Zeile und wann in einer Spalte. Bei mir steht er immer in einer Zeile und auch in einer Spalte.
Gruß Hajo

AW: Daten_bereinigen
10.08.2014 08:10:39
Lammi
Hallo Hajo,
alle Merkmale die gelöscht werden sollen stehen im Arbeitsblatt Daten_bereinigen.
Beispiel: in A1 (Zeile) es wird aaa aufgeführt.
Beispiel: in B1 (Spalten) er wird Datenreihe10 aufgeführt.
Schritt 1:
Das Makro sucht zeilenweise die Daten ab und löscht die Zeile 12 ( mit aaa),13 (mit aaaa) und 18 (mit 100). die Datenreihe10 ist zu diesem Zeitpunkt nur teileweise gelöscht.
Schritt 2:
Im nächsten Arbeitsschritt wird Spaltenweise geprüft.
Spalte J (Datenreihe10) ist im Arbeitsbaltt Daten_bereinigen hinterlegt und soll dann vollständig
gelöscht werden.
Gruß
Lemmi

Anzeige
AW: Daten_bereinigen
10.08.2014 08:25:08
Spenski
Also meinst du Zelle und nicht zeile???
Gruss

meinen post nicht beachten owt.
10.08.2014 08:30:29
Spenski

AW: meinen post nicht beachten owt.
10.08.2014 08:58:31
Lammi
Hallo Spenski,
also wenn Zeile eine "falschen" Inhalt aufweist soll die Zeile gelöscht werden.
Gruß
Lemmi

noch mal überdenken?
10.08.2014 11:07:07
Erich G.
Hi La/emmi,
das ist nicht so ganz klar geworden.
Diese Daten seien mal vorgegebenen:
Daten

AW: noch mal überdenken?
10.08.2014 12:12:23
Lammi
Hallo Erich,
"....MMMMM kann nicht gefunden werden - wurde ja gelöscht, also bleibt Spalte D ungelöscht. Soll dat?"
Ja, das würde dann so sein.
Eine Sache die ich vielecht nicht bedacht habe!
Im Regelfall werden ich wohl in der Spalte nur Kopfzeilen hinterlegen, also müßte dies dann Datenreihe 4 unter Arbeisblatt Daten_bereinigen (Spalte) heißen!
Gruß
Lemmi

Anzeige
Codevorschlag
10.08.2014 12:30:23
Erich G.
Hi Lemmi,
probier das mal aus - da hast du alle Möglichkeiten, und alles wird gefunden:

Option Explicit
Sub SelektivLoeschen()
Dim arLR, arLC, arQ, rr As Long, cc As Long, ii As Long, rngR As Range, rngC As Range
With Sheets("Daten_bereinigen")
arLR = .Cells(1, 1).Resize(.Cells(.Rows.Count, 1).End(xlUp).Row)
arLC = .Cells(1, 2).Resize(.Cells(.Rows.Count, 2).End(xlUp).Row)
End With
With Sheets("Daten")
arQ = .Cells(1, 1).CurrentRegion
For rr = 1 To UBound(arQ)
For cc = 1 To UBound(arQ, 2)
For ii = 1 To UBound(arLR)
If Not IsEmpty(arLR(ii, 1)) Then
If arQ(rr, cc) = arLR(ii, 1) Then
If rngR Is Nothing Then
Set rngR = .Rows(rr)
Else
Set rngR = Union(rngR, .Rows(rr))
End If
End If
End If
Next ii
For ii = 1 To UBound(arLC)
If Not IsEmpty(arLC(ii, 1)) Then
If arQ(rr, cc) = arLC(ii, 1) Then
If rngC Is Nothing Then
Set rngC = .Columns(cc)
Else
Set rngC = Union(rngC, .Columns(cc))
End If
End If
End If
Next ii
Next cc
Next rr
End With
If Not rngR Is Nothing Then rngR.Delete
If Not rngC Is Nothing Then rngC.Delete
End Sub
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich und: Schönen Restsonntag noch!

Anzeige
AW: Codevorschlag
10.08.2014 12:42:02
Spenski
hallo erich
der code buggt noch wenn man bei spalte oder zeile nix einträgt
gruss

AW: Codevorschlag
10.08.2014 15:46:43
Lammi
Hallo Erich,
alles bestens!
Wie muss ich die Zeilen ändern wenn ich das aktive Arbeitsblatt ansprechen will
---
with Sheets("Daten")....
Gruß
Lammi

ActiveSheet und ohne Zeile/Spalte
10.08.2014 16:59:18
Erich G.
Hi zusammen,
hier habe ich das ActiveSheet (von dem ich abrate - da hat man sich schnell mal was
auf dem falschen Sheet zerschossen...) mal reingeschrieben.
Abgeprüft wird auch, ob in Zeile bzw. Spalte etwas steht:

Sub SelektivLoeschen2()
Dim arLR, arLC, arQ, rr As Long, cc As Long, ii As Long, rngR As Range, rngC As Range
With Sheets("Daten_bereinigen")
arLR = .Cells(1, 1).Resize(.Cells(.Rows.Count, 1).End(xlUp).Row)
arLC = .Cells(1, 2).Resize(.Cells(.Rows.Count, 2).End(xlUp).Row)
End With
With ActiveSheet                          ' Sheets("Daten")
arQ = .Cells(1, 1).CurrentRegion
For rr = 1 To UBound(arQ)
For cc = 1 To UBound(arQ, 2)
If IsArray(arLR) Then
For ii = 2 To UBound(arLR)
If Not IsEmpty(arLR(ii, 1)) Then
If arQ(rr, cc) = arLR(ii, 1) Then
If rngR Is Nothing Then
Set rngR = .Rows(rr)
Else
Set rngR = Union(rngR, .Rows(rr))
End If
End If
End If
Next ii
End If
If IsArray(arLC) Then
For ii = 2 To UBound(arLC)
If Not IsEmpty(arLC(ii, 1)) Then
If arQ(rr, cc) = arLC(ii, 1) Then
If rngC Is Nothing Then
Set rngC = .Columns(cc)
Else
Set rngC = Union(rngC, .Columns(cc))
End If
End If
End If
Next ii
End If
Next cc
Next rr
End With
If Not rngR Is Nothing Then rngR.Delete
If Not rngC Is Nothing Then rngC.Delete
End Sub
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich

Anzeige
AW: ActiveSheet und ohne Zeile/Spalte
13.08.2014 17:10:13
Lammi
Hallo Erich,
vielen Dank für die Hilfe!
Ich habe das Makro eingesetzt udn festtellen müssen das ich eine erweiterte Abfragen!
Dazu eröffne ich einen neunen Beitrag.
Gruß
Lammi

AW: Daten_bereinigen
10.08.2014 20:53:09
Daniel
HI
wenn in den Daten keine Wahrheitswerte stehen und keine Formeln, dann probier mal das:
Sub test()
Dim Zelle As Range
Dim shD As Worksheet
Dim shDber As Worksheet
Set shD = Sheets("daten")
Set shDber = Sheets("Daten_bereinigen")
'--- Zeilen löschen
If shDber.Cells(2, 1).Value <> "" Then
For Each Zelle In Range(shDber.Cells(2, 1), shDber.Cells(1, 1).End(xlDown))
shD.Cells.Replace Zelle.Value, True, xlWhole
Next
On Error Resume Next
shD.Cells.SpecialCells(xlCellTypeConstants, 4).EntireRow.Delete
On Error GoTo 0
End If
'--- Spalten löschen
If shDber.Cells(2, 2) <> "" Then
For Each Zelle In Range(shDber.Cells(2, 2), shDber.Cells(1, 2).End(xlDown))
shD.Rows(1).Replace Zelle.Value, True, xlWhole
Next
On Error Resume Next
shD.Rows(1).SpecialCells(xlCellTypeConstants, 4).EntireColumn.Delete
End If
End Sub
Gruß Daniel

Anzeige
AW: Daten_bereinigen
13.08.2014 17:11:34
Lammi
Hallo Daniel,
vielen Dank für die Hilfe!
Ich habe das Makro eingesetzt und festtellen müssen, dass ich eine erweiterte Abfragen duchführen muss!
Dazu eröffne ich einen neunen Beitrag.
Gruß
Lammi

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige