Ich bin sehr neu in VBA. Ich versuche, bestimmte Kundentransaktionen auf einer Tabellenkalkulation zu isolieren.VBA Entfernen von Zeilen aus einer Kalkulationstabelle, wenn Zellen eine bestimmte Zeichenfolge enthalten
Spalte "A" enthält die Zahlungsmethode des Kunden (Prepaid oder verschiedene andere Methoden). Spalte "D" enthält den Kunden, den wir auch versenden, Spalte "L" enthält den Kunden, aus dem wir versenden.
Wenn die Zelle in Spalte "A" "Prepaid" hat, möchte ich Spalte "D" für den Kundennamen (Jaba) suchen. Ich werde dann alle Zeilen löschen, die diesen Kunden nicht enthalten. Wenn die Zelle in Spalte "A" nicht "vorausbezahlt" ist, möchte ich, dass sie die Spalte "L" nach dem Kundennamen durchsucht und alle Zeilen löscht, die diese Zeichenfolge nicht enthalten. Wenn ich den unten angegebenen Code ausführe, erhalte ich einen 1004 Fehler beim folgenden Skript 'Wenn cell3.Find (ContainWord) ist nichts als'. Jede Hilfe würde sehr geschätzt werden.
Sub DoNotContainClearCells()
Dim rng As Range
Dim rng2 As Range
Dim rng3 As Range
Dim cell As Range
Dim cell2 As Range
Dim cell3 As Range
Dim ContainWord As String
'What range do you want to search?
Set rng = Range("A:A")
Set rng2 = Range("D:D")
Set rng3 = Range("L:L")
'What phrase do you want to test for?
ContainWord = "jaba"
For Each cell In rng
If cell.Value = "prepaid" Then
'Loop through each cell in range and test cell contents
For Each cell2 In rng2.Cells
If cell2.Find(ContainWord) Is Nothing Then EntireRow.Delete
Next cell2
Else
'Loop through each cell in range and test cell contents
For Each cell3 In rng3.Cells
If cell3.Find(ContainWord) Is Nothing Then EntireRow.Delete
Next cell3
End If
Next
End Sub
Warum Sie durch alle Spalte A müssen Schleife gegeben? Sobald Prepaid einmal gefunden wurde, löscht es alle Einträge der Spalte D. Sobald es einen anderen Wert gefunden hat, löscht es alle Einträge der Spalte L. Es gibt keinen Grund, weiter in A zu suchen. Oder habe ich es falsch verstanden? – SJR
Stimmen Sie mit @SJR zu, es sei denn, Sie meinen das für jede Zeile. Beispiel, wenn Zelle (A1) = "vorausbezahlt" >> überprüfe ob Zelle (D1) = "jaba" >> wenn ja Zeile löschen. Wenn Zelle (A1) <> "Prepaid" >> überprüfe ob Zelle (L1) = "Jaba" >> wenn ja Zeile löschen. Ansonsten sind 3 "For" -Schleifen gar nicht nötig. –
Aufgrund von Feinheiten, wie Logistikunternehmen ihre Kunden abrechnen, ist die initial for-Schleife notwendig. Ich kann von Jaba an eine dritte Partei versenden, aber ich bin nicht an dieser Rechnung interessiert, da sie im Voraus bezahlt wird. Danke – SmC