Registriert seit: 07.05.2020
Version(en): 2016
Mappe1.xlsx (Größe: 14,88 KB / Downloads: 14)
Hallo,
ich habe eine Tabelle, in der 2 Blätter sind.
Blatt 1 = Daten
Blatt 2 = Zusammenfassung
In Blatt 1 stehen in Spalte A Nummern, die ich brauche
In Blatt 2 stehen in Spalte B ebenfalls Nummern, allerdings auch welche, die ich nicht benötige
Wie muss das Makro aussehen, dass es die Zeile löscht, wenn keiner der Referenzwerte aus der Liste in Blatt 1 steht?
Ich bedanke mich im Voraus für die Unterstützung.
Viele Grüße
Andreas
Registriert seit: 22.11.2019
Version(en): 365
Hallo Andreas,
teste mal das nachfolgende Makro, ob es Deinen Wünschen entspricht.
Option ExplicitSub ZeilenLoeschen()'Zeilen löschen, die nicht in der Referenzliste stehen Dim oDict
As Object, vArr
As Variant, WSh
As Worksheet Dim iRow
As Long, sKey
As String, sBer
As String Set oDict = CreateObject(
"Scripting.Dictionary")
'Benötigte Items aus Referenzliste ermitteln Set WSh = Sheets(
"Daten")
'Referenzblatt sBer =
"$A$1:$A$" & WSh.Cells(WSh.Rows.Count,
"A").End(xlUp).Row
vArr = WSh.Range(sBer)
'Eingangsdaten ins Array übertragen With oDict
For iRow =
1 To UBound(vArr)
'Alle Zeilen durchgehen sKey = vArr(iRow,
1)
If Not .Exists(sKey)
Then 'Item einmalig ins Dictionary oDict(sKey) = oDict(sKey) + vArr(iRow,
1)
End If Next iRow
'Abgleich mit Zusammenfassung durchführen Set WSh = Sheets(
"Zusammenfassung")
'Ausgabeblatt For iRow = WSh.Cells(WSh.Rows.Count,
"B").End(xlUp).Row
To 1 Step -1 If Not .Exists(WSh.Cells(iRow,
"B").Value)
Then Rows(iRow).Delete Shift:=xlUp
End If Next iRow
End WithEnd Sub viele Grüße
Karl-Heinz
Folgende(r) 1 Nutzer sagt Danke an volti für diesen Beitrag:1 Nutzer sagt Danke an volti für diesen Beitrag 28
• ari-2001
Registriert seit: 02.05.2018
Version(en): Excel 365 & 2016
@Karl-Heinz: Ist das nicht mit Atombomben auf Amöben schießen?
Code:
Sub Loeschen()
Dim i As Long
For i = Cells(Rows.Count, 2).End(xlUp).Row To 2 Step -1
If WorksheetFunction.CountIf(Sheets("Daten").Columns(1), Cells(i, 2)) = 0 Then
Rows(i).Delete shift:=xlUp
End If
Next i
End Sub
Schöne Grüße
Berni
Registriert seit: 01.04.2020
Version(en): 2007
Hallo Andreas,
probier mal:
Code:
Sub Andreas()
Dim a As Range, b As Range
Set a = Sheets("Daten").Range("A1:A9")
'oder
Set a = Sheets("Daten").Range("A1").CurrentRegion
With Sheets("Zusammenfassung").Range("A1").CurrentRegion
For Each b In .Columns(2).Cells
If Not a.Find(b, lookat:=xlWhole) Is Nothing Then .Rows(b.Row).Clear
Next b
End With
End Sub
Sorry, muss weg. Arbeit wartet.
Gruß, Raoul
Folgende(r) 1 Nutzer sagt Danke an Raoul21 für diesen Beitrag:1 Nutzer sagt Danke an Raoul21 für diesen Beitrag 28
• ari-2001
Registriert seit: 07.05.2020
Version(en): 2016
Hallo zusammen und vielen Dank.
Leider löscht er mir die Zeilen, in denen die Werte vorkommen,
er soll aber die Zeilen löschen, in denen die Werte NICHT vorkommen.
Wie fange ich das an?
Viele Grüße
Andreas
Registriert seit: 02.05.2018
Version(en): Excel 365 & 2016
05.06.2020, 15:17
(Dieser Beitrag wurde zuletzt bearbeitet: 05.06.2020, 15:17 von MisterBurns.)
Kann ich zwar nicht nachvollziehen, aber dann schreibe im Code halt statt
= 0 Then
eben
> 0 Then
Auf Fragen in privaten Nachrichten antworte ich grundsätzlich nicht.
Schöne Grüße
Berni
Registriert seit: 07.05.2020
Version(en): 2016
Hallo Benni,
vielen lieben Dank, ich war einfach nur zu dösig
Je nachdem auf welchen Blatt ich grade aktiv bin, geht dein Code natürlich einwandfrei.
Wenn ich allerdings auch so blöd bin und das Makro auf dem Datenblatt auszuführen, darf ich mich nicht
wundern, wenn es nicht funktioniert!
Hab vielen lieben Dank und ein schönes Wochenende!
Andreas