Wert suchen und automatisch löschen
#1
Hallo liebes Forum,
erstmal großen Respekt davor, was hier aufgebaut wurde! Ich bin über dieses Forum gestolpert, weil ich nicht weiterkomme, bzw. nicht einmal weiß, ob mein Vorhaben in Excel umzusetzen ist.

Ich habe eine Spalte voll mit verschiedenen Werten. Nun möchte ich nach einem bestimmten Wert suchen. Excel soll mir dann:

A) Anzeigen ob der gesuchte Wert existiert
und
B) Wenn der Wert existiert, ihn automatisch aus der Spalte löschen


Ist das irgendwie umsetzbar? Ich hoffe auf eure Hilfe und sage schon einmal vielen Dank im Voraus!  Blush
Top
#2
Hallo,

hier eine mögliche Variante:


Code:
Sub such()
 Dim suchSpalte As Long
 Dim suchWert
 Dim vntZ
 
 suchSpalte = 1 'Spalte A
 suchWert = "kuckuck"
 
 vntZ = Application.Match(suchWert, Columns(suchSpalte), 0)
 If IsNumeric(vntZ) Then
   MsgBox "Ok, hast mich gefunden!" & vbLf & vbLf & "Tu, was Du tun musst!"
   Rows(vntZ).Delete 'ganze zeile wird gelöscht
   'Cells(vntZ, suchSpalte).ClearContents 'Zellinhalt wird gelöscht
 Else
   MsgBox suchWert & " hat sich gut versteckt oder existiert in Spalte " & suchSpalte & " gar nicht!"
 End If
End Sub


Wenn Du damit nicht klar kommst, dann stell bitte einen Tabellenausschnitt mit Beispielwerten ein.
Lies dazu die mit wichtig gekennzeichneten Beiträge im Forumskopf.


Edit:

Beim Löschen kann natürlich nur eine der Zeilen im Code ausgeführt werden, deshalb habe ich jetzt die Andere auskommentiert.
Gruß Atilla
Top
#3
Also so stelle ich mir das ungefähr vor. Komme ich da mit deinem Code weiter? Vielen Dank für deine Hilfe! :)


Angehängte Dateien
.xlsx   Codesuche.xlsx (Größe: 36,45 KB / Downloads: 3)
Top
#4
Hallo,

das musst Du entscheiden. Einfach mal einfügen und testen.

In der Tabelle könntest Du Dir auch schon so einen Überblick verschaffen:


Arbeitsblatt mit dem Namen 'Tabelle1'
 ABCDE
3CODESUCHE:3659794782 Code vorhanden:Ja
4   in Zeile6
5Verfügbare

Codes
    
63659794782    
76973587376    

ZelleFormel
E3=WENN(ZÄHLENWENN(Tabelle2[Verfügbare
Codes];$B$3)
;"Ja";"Nein")
D4=WENN(E3="Ja";"in Zeile";"")
E4=WENN(E3="Ja";VERGLEICH(B3;Tabelle2[Verfügbare
Codes];0)
+5;"")
Diese Tabelle wurde mit Tab2Html (v2.4.1) erstellt. ©Gerd alias Bamberg


Und hier der Code noch einmal angepasst.
Er sucht nach dem Wert in B3 und fragt bei Fund noch einmal nach, ob gelöscht werden soll.

Code:
Sub such()
 Dim suchSpalte As Long
 Dim suchWert
 Dim vntZ
 
 suchSpalte = 1 'Spalte A
 suchWert = Cells(3, 2).Value 'Wert aus Zelle B3 wird gesucht
 
 vntZ = Application.Match(suchWert, Columns(suchSpalte), 0)
 If IsNumeric(vntZ) Then
   If MsgBox(suchWert & " wurde in Zelle A" & vntZ & " gefunden!", vbYesNo, "Frage") = vbYes Then
'    Rows(vntZ).Delete 'ganze zeile wird gelöscht
   Cells(vntZ, suchSpalte).Clear 'Zellinhalt wird
   End If
 Else
   MsgBox suchWert & " hat sich gut versteckt oder existiert in Spalte " & suchSpalte & " gar nicht!"
 End If
End Sub
Gruß Atilla
Top
#5
Hallo kunst...

da du ja vorbildlich eine benannte Tabelle nutzt, hier einmal attilas  Code angepasst auf die benannte Tabelle.

Ein Vorteil von benannten Objekten für Makroprogrammierung ist, dass die Positionen in den Programmen nicht mehr fest eingegen werden müssen.
Wenn ich also die Objekte in der Tabelle verschiebe muss ich das Programm nicht ändern.

Code:
Sub cbLoeschen_Click()
 Dim vntWert
 Dim vntZ
 vntWert = ThisWorkbook.Names("Suchwert").RefersToRange.Value
 vntZ = Application.Match(vntWert, Range("Tabelle2[Verfügbare Codes]"), 0)
 
 If IsNumeric(vntZ) Then
   ListObjects("Tabelle2").ListRows(vntZ).Delete
 Else
   MsgBox suchWert & " nicht vorhanden!"
 End If
End Sub


Achtung!
1) Ich habe auch der Zelle mit dem Suchwert einen Namen gegeben.(Damit er auch verschoben werden kann ohne das Makro anpassen zu müssen.)
2) Ich habe den manuellen Zeilenumbruch in der Überschrift entfernt.


Angehängte Dateien
.xlsm   Codesuche.xlsm (Größe: 21,8 KB / Downloads: 1)
helmut

Für mich ist die Möglichkeit in Excel an Zellen und Bereichen Namen zu vergeben die wichtigste Funktionalität.
Sie macht Formeln und den VBA-code verständlicher. Für Makros gilt die Regel: "Nur über benannte Bereiche auf den Inhalt der Zellen zugreifen."
Und wofür sind Regeln da? Um nachzudenken bevor man sie bricht.





Top


Gehe zu:


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