VBA Wenn wert in zelle "A1:A99" vorhanden dann lösche Zelle "B1:B99"
#1
Grüß Gott,

ich scheitere aktuell an folgender Problematik

In der Spalte D3 werden Daten eingebenen zb. D3 = Maus D4 = Monitor usw usw.

Nun prüfe ich über VBA ab, ob diese Daten bereits in der Spalte C vorhanden sind.
ist dies der Fall, soll der Inhalt der entsprechende(n) Zelle(n) gelöscht werden.


Meine Lösung sieht momentan so aus:

Sub Ersetzen()

Dim lngZeile As Long
Dim rngZelle As Range

Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual

lngZeile = Range("C" & Rows.Count).End(xlUp).Row
Range("C3:C99" & lngZeile).Select

For Each rngZelle In Selection
    rngZelle.Value = Replace(rngZelle.Value, Range("D3"), "")
Next rngZelle

Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
Call Calculate

End Sub


Das Problem hier ist aber, dass ich nicht weiß, wie ich ihm sage, dass er nicht nur die Zelle D3 prüfen soll, sondern alles von D3 bis D99
Antworten Top
#2
Hi

Im Prinzip so, nur das du es durch "" ersetzt.

Spalte A durch Werte in Spalte B "bereinigen" (clever-excel-forum.de)
Antworten Top
#3
Hallo,

Code:
Sub Ersetzen()
  Application.Calculation = xlCalculationManual
  Range("C3:C" & Range("C" & Rows.Count).End(xlUp).Row).Replace Range("D3").Value, ""
  Application.Calculation = xlCalculationAutomatic
  Call Calculate
End Sub

Gruß Uwe
Antworten Top
#4
(30.09.2021, 10:52)Kuwer schrieb: Hallo Uwe,

also dein Code sieht schonmal viel angenehmer aus und arbeitet auch viel schneller.
Aber es geht darum, dass er alles ab D3 bis D99 prüfen soll und nicht nur die Zelle D3  17

Code:
Sub Ersetzen()
  Application.Calculation = xlCalculationManual
  Range("C3:C" & Range("C" & Rows.Count).End(xlUp).Row).Replace Range("D3").Value, ""
  Application.Calculation = xlCalculationAutomatic
  Call Calculate
End Sub

Gruß Uwe
Antworten Top
#5
Hallo,

das hatte ich übersehen. Dann doch mit Schleife:
Code:
Sub Ersetzen()
  Dim rngZelle As Range
  Application.Calculation = xlCalculationManual
  For Each rngZelle In Range("C3:C" & Range("C" & Rows.Count).End(xlUp).Row)
    rngZelle.Replace Cells(rngZelle.Row, 4).Value, ""
  Next rngZelle
  Application.Calculation = xlCalculationAutomatic
  Call Calculate
End Sub

Gruß Uwe

Du meinst es aber wohl so?
Code:
Sub Ersetzen()
  Dim rngZelle As Range
  Application.Calculation = xlCalculationManual
  For Each rngZelle In Range("D3:D" & Range("D" & Rows.Count).End(xlUp).Row)
    Range("C3:C99").Replace rngZelle.Value, ""
  Next rngZelle
  Application.Calculation = xlCalculationAutomatic
  Call Calculate
End Sub

Gruß Uwe
Antworten Top
#6
(30.09.2021, 11:19)Kuwer schrieb: Hallo Uwe


Fast perfekt  18

was jetzt noch Fehlerhaft ist:
Wenn ich zb "Monitor 1" und "Monitor 2" habe, und ich möchte das er "Monitor 1" löscht, dann löscht er überall wo "Monitor" steht, die "2" bleibt in dem Fall stehen  16

Es gab doch eine Möglichkeit ihm den exakten Wortlaut zu "befehlen" 



das hatte ich übersehen. Dann doch mit Schleife:
Code:
Sub Ersetzen()
  Dim rngZelle As Range
  Application.Calculation = xlCalculationManual
  For Each rngZelle In Range("C3:C" & Range("C" & Rows.Count).End(xlUp).Row)
    rngZelle.Replace Cells(rngZelle.Row, 4).Value, ""
  Next rngZelle
  Application.Calculation = xlCalculationAutomatic
  Call Calculate
End Sub

Gruß Uwe

Du meinst es aber wohl so?
Code:
Sub Ersetzen()
  Dim rngZelle As Range
  Application.Calculation = xlCalculationManual
  For Each rngZelle In Range("D3:D" & Range("D" & Rows.Count).End(xlUp).Row)
    Range("C3:C99").Replace rngZelle.Value, ""
  Next rngZelle
  Application.Calculation = xlCalculationAutomatic
  Call Calculate
End Sub

Gruß Uwe
Antworten Top
#7
Hallo,

Code:
Range("C3:C99").Replace rngZelle.Value, "", xlWhole

Gruß Uwe
Antworten Top
#8
(30.09.2021, 12:35)Kuwer schrieb: Hallo,

Tausend dank  18

Code:
Range("C3:C99").Replace rngZelle.Value, "", xlWhole

Gruß Uwe
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 2 Gast/Gäste