PDA

Vollständige Version anzeigen : Spalte durchsuchen, andere Zelle in gleicher Zeile löschen


Klaudia95
23.08.2017, 11:56
Hallo Experten,

ich arbeite leider erst seit ein paar Tagen mit VBA und bin deshalb noch blutige Anfängerin. Ich hoffe jemand kann mir hier weiterhelfen. Wahrscheinlich ist das kein Problem für einen Experten in VBA.

Ich würde gerne mit einem Makro eine Spalte (C) nach einem Wort durchsuchen z.B. "Flasche" und in jeder Zeile mit dem Wort Flasche den Zelleninhalt einer anderen Spalte (W) löschen (also einfach mit "clearcontents").

Zum Beispiel "Falsche" steht in C2, also soll Zelleninhalt von W2 gelöscht werden.


Liebe Grüße
Klaudia

lupo1
23.08.2017, 12:16
Wenn Du nach C (temporär) sortierst, stehen die Flaschen untereinander, und Du kannst den Block W auf einmal markieren und dessen Inhalt entfernen.

Nur so als Anmerkung, einmal für manuell, aber auch als möglichen VBA-Ansatz.

Beverly
23.08.2017, 13:54
Hi Klaudia,

zum Suchen benutzt man am besten die FindNext-Methode (Google sagt mehr dazu) und zum Löschen kannst du dann den Befehl Offset(Zeilenversatz, Spaltenversatz) verwenden - nach diesem Prinzip:


SuchVariable.Offset(0, 20).ClearContents


Da du in derselben Zeile löschen willst, ist der Zeilenversatz = 0 und Spalte W ist die 20. Spalte von C aus gerechnet - deshalb Spaltenversatz = 20.

<hr width="20%" align="left"><img src="http://excel-inn.de/images/grusz.gif" height=35" align="left" alt="Grußformel"><a href="http://excel-inn.de/"><img border="0" src="http://excel-inn.de/images/logo1.gif" height=35" align="middle" alt="Beverly's Excel - Inn"></a>

Bayernsandy
24.08.2017, 11:12
Hallo Klaudia 95!

Versuch es mal mit dem angehängten VBA Code.

Die Funktion ZellenLoeschen durchläuft alle Zeilen im einem von dir vorzugebenden Bereich(1. Parameter) und sucht in diesem Bereich ob der Wert "Suchwert" (2. Parameter) gefunden wird. Falls ja, dann wird in dieser Zeile die Zelle "Spalte" (3. Parameter) gelöscht. Am Ende wird die Anzahl der gelöschten Zeilen zurückgegeben.


Sub test()

MsgBox ZellenLoeschen("A1:A11", "Hans", "B") ' Es wird die Anzahl der gelöschten Zeilen zurückgegeben

End Sub



Function ZellenLoeschen(Zellbereich As String, Suchwert As String, Spalte As String) As Integer

Dim Bereich As Range ' Variable um einen Bereich festzulegen
Dim Zeile As Range ' Variable um eine Zeile aus dem Range
' Bereich anzusprechen
Dim i As Integer ' Zähler wie viele Löschungen gemacht wurden
i = 0

Set Bereich = ActiveSheet.Range(Zellbereich) ' Bereich definieren;
' Zellbereich ist übergebene Variable

For Each Zeile In Bereich ' Jede Zeile des Bereiches durchlaufen

If Zeile.Value = Suchwert Then ' Wenn Wert der Variablen Zelle mit dem Suchwert übereinstimmt, dann Lösche den Wert der Spalte xy
Range(Spalte & Zeile.Row).Value = " "
i = i + 1 ' Zähler wird um 1 hochgesetzt, weil hier die Löschungen gezählt werden.
End If

Next

ZellenLoeschen = i ' Anzahl gelöschte Zeilen wird an Aufruffunktion zurückgegeben.
End Function




Gruß Thomas