Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1648to1652
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

Wert Finden und Zeilen löschen

Wert Finden und Zeilen löschen
17.10.2018 12:54:29
Georg

Liebe Mitglieder, ich müsste eine Datev Datei bereinigen (regelmäßig)
Im Sheet(1) stehen Datensätzen mit Abrechnungsdaten.
Im Sheet(2) trage ich eine Liste von Namen und/oder Personalnummern ein.
Jetzt soll JEDER Datensatz in Sheet(1) gelöscht werden, insofern der Name (oder Personalnummer ) als eindeutiges Kriterium in Sheet(2) steht.
In Sheet(1) können immer mehrere Datensätze zu einem Namen/P-Nr stehen!
Ob mit Name oder mit P-Nr gearbeitet wird, ist mir egal.
Ich habe schon angefangen, aber meine Kenntnisse ... brauchen wir einen Array?
Siehe auch meine Kommentare
ein paar konkrete Hinweise wären super!!! DANKE
Sub Filtern()
With Worksheets(2).Range("a1:a500")
Set c = .Find(WAS SOLL gefunden werden? lookin=xlvalues)
If Not c Is Nothing Then
firstAddress = c.Address
Do
c.row.delete?
Set c = .FindNext(c)
Loop While Not c Is Nothing And c.Address  firstAddress
End If
End With
End Sub

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

Betreff
Datum
Anwender
Anzeige
AW: Wert Finden und Zeilen löschen
17.10.2018 13:03:14
Werner
Hallo Georg,
das würde ich ganz anders angehen. Per VBA eine Zählenwenn-Formel in Blatt 1 eintragen und dann mit Duplikate entfernen arbeiten.
Mach doch mal eine Beispielmappe und lade die hier hoch (aber bitte keine .xlsm).
Gruß Werner
AW: Testdatei ist hochgeladen
17.10.2018 13:44:12
Georg
...und hier zu finden:
https://www.herber.de/bbs/user/124690.xlsx
Lieber Werner, ich denke die P-Nr ist das bessere Kriterium, da Datev immer Vor- und Nachname in ein Feld steht. Die Liste ist sheet 2, benannt mit Namen, die Datensätze, die bereinigt werden sollen, sind im sheet 1 "DATEN"
Danke Georg
Anzeige
AW: Testdatei ist hochgeladen
17.10.2018 14:38:29
Werner
Hallo Georg,
also noch mal:
Die Datensätze der Personalnummern aus dem Blatt "Namen" sollen aus dem Blatt "DATEN" gelöscht werden?!?
Voraussetzung für mein Makro ist, dass im Blatt "DATEN" die Spalte L frei (leer) ist, da ich die als Hilfsspalte verwende.
Teste mal:
Option Explicit
Public Sub Zeilen_löschen()
Dim loLetzte As Long
With Worksheets("Daten")
loLetzte = .Cells(.Rows.Count, 1).End(xlUp).Row
.Cells(1, 12) = 1
With .Range(.Cells(2, 12), .Cells(loLetzte, 12))
.FormulaLocal = "=WENN(ZÄHLENWENN(Namen!A:A;C2)>0;1;ZEILE())"
.Value = .Value
End With
.Range("$A$1:$L$" & loLetzte).RemoveDuplicates Columns:=12, Header:=xlNo
.Columns(12).ClearContents
End With
End Sub
Gruß Werner
Anzeige
AW: Vielen Dank, lieber Werner
17.10.2018 16:09:20
Georg
..funktioniert einwandfrei. Die Anpassungen wie letzte Spalte krieg ich hin
PERFEKT und ich habe was dazugelernt, obwohl ich mir den Code noch genauer anschauen muss.
Gruß G
Gerne und....
17.10.2018 16:16:27
Werner
Hallo Georg,
...ich kann dir das auch gerne noch umschreiben, dass die erste freie Spalte für die Hilfsspalte automatisch ermittelt wird.
Wenn Bedarf, dann melden.
Ansonsten gerne u. Danke für die Rückmeldung.
Gruß Werner
AW: Gerne und umschreiben wäre prima
17.10.2018 16:27:19
Georg
(allein schon wg. dem Lerneffekt): ich habe überlegt, geht das mit letzter Spalte (columns.count)?
Gruß G
AW: Gerne und umschreiben wäre prima
17.10.2018 16:44:22
Werner
Hallo Georg,
richtig, geht mit Columns.Count.
Option Explicit
Public Sub Zeilen_löschen()
Dim loLetzte As Long, loSpalte As Long
Application.ScreenUpdating = False
With Worksheets("Daten")
loLetzte = .Cells(.Rows.Count, 1).End(xlUp).Row
loSpalte = .Cells(1, .Columns.Count).End(xlToLeft).Offset(, 1).Column
.Cells(1, loSpalte) = 1
With .Range(.Cells(2, loSpalte), .Cells(loLetzte, loSpalte))
.FormulaLocal = "=WENN(ZÄHLENWENN(Namen!A:A;C2)>0;1;ZEILE())"
.Value = .Value
End With
.Range(.Cells(1, 1), .Cells(loLetzte, loSpalte)).RemoveDuplicates Columns:=loSpalte, Header: _
=xlNo
.Columns(loSpalte).ClearContents
End With
Application.ScreenUpdating = True
End Sub
Gruß Werner
Anzeige
AW: nochmals vielen Dank
17.10.2018 16:55:49
Georg
..für die Unterstützung. Grüße G
Gerne u. Danke für die Rückmeldung. o.w.T.
17.10.2018 17:15:10
Werner

319 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige