Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1916to1920
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Wenn Wert in Zelle, dann löschen
11.02.2023 12:31:59
Jan
Hallo zusammen, ich bekomme das mit wenn, finden nicht hin. Ich habe schon das hier versucht: https://excelhero.de/formeln/wenn-zelle-x-enthaelt-dann/
Problem: Ich muss einen bestimmten Wert in "categories" finden, und wenn dieser darin vorkommt, diesen Wert aus "categories" löschen.
Z.B. suche ich 30666 in 30573|30598|30626|30666|37762
Ziel ist: 30573|30598|30626|37762
Geht das überhaupt mit excel?
Güße
Jan

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Suchen und ersetzen
11.02.2023 12:44:56
JoWE
AW: Wenn Wert in Zelle, dann löschen
11.02.2023 12:47:04
Piet
Hallo Jan
amüsante Frage, dann musst du ein absoluter Neuling in Excel sein!!?
Du kannst in Excel manuell mit der normalen Such/Replace Methode (Ctrl + F, Ctrl + H) das ganze lösen, indem du den Suchwert vorgist, und Replace Leer laesst. Oder es geht mit einem VBA Makro.
Du kannst den Vorgang auch mit dem Makro Recorder aufzeichnen, und spaeter als Makro starten.
mfg Piet
AW: Wenn Wert in Zelle, dann löschen
12.02.2023 10:13:26
Marc
na mach aus dem Gesuchten einen String
dann kannst du mit InStr("WogesuchtWerdenSoll","GesuchterWert")
danach suchen und mit Replace kannst du den Wert dann daraus enternen aus dem String..
AW: Wenn Wert in Zelle, dann löschen
13.02.2023 10:35:11
Jan
Habe es mit finden versucht, aber als Ergebnis bekomme ich 19 angezeigt.
Vielleicht mal so: In Tabelle 1, Spalte A habe ich 50.000 Datensätze, einer davon ist "30666".
In Tabelle 2 habe ich Spalte AW die so aufgebaut ist: 30573|30598|30626|30666|37762
Ein bekannter meinte dafür braucht man VBA, weil sverweis, finden, ersetzen hier vermutlich nicht gehen. Ich hoffte das mit einer Formel hinzubekommen. Das neue Ergebnis "30573|30598|30626|37762" kann auch in einer eigenen Spalte stehen...
Grüße
Jan
Anzeige
AW: Wenn Wert in Zelle, dann löschen
13.02.2023 17:29:37
Piet
Hallo
bei diesem kleinen Code kannst du den Wert der gelöscht werden soll selbst angeben..
Du musst nur noch die richtige Spalte angeben. Zum Testen nahm ich Spalte A.
mfg Piet
Sub Werte_löschen()
Dim Eingabe As Variant
    Eingabe = InputBox("Bitte Wert zum löschen angeben")
    If Eingabe = Empty Then Exit Sub
    'LastZelle der aktiven Spalte finden
    lz1 = Cells(Rows.Count, "A").End(xlUp).Row
    Range("A2:A" & lz1).Replace "30666|", ""
End Sub

AW: Wenn Wert in Zelle, dann löschen
16.02.2023 11:53:00
Jan
Hi Piet, wow super, vielen Dank. Ich denke man braucht eine Schleife, aber meine VBA Zeiten sind schon ein paar Jahre her. Anbei ein screenshot, damit du dir die Daten besser vorstellen kannst. https://prnt.sc/g8mxpTMjJnVr Das Prozedere soll so aussehen.
Lauf 1
Nimm 13221 aus categoryID und suche danach in Spalte categories > Wenn gefunden lösche 13221|
Lauf 2
Nimm 13222 aus categoryID und suche danach in Spalte categories > Wenn gefunden lösche 13222|
Lauf 3
Nimm 13223 aus categoryID und suche danach in Spalte categories > Wenn gefunden lösche 13223|
do loop until categoryID =""
Lieber Gruß
Jan
Anzeige
AW: Wenn Wert in Zelle, dann löschen
17.02.2023 03:14:05
Piet
Hallo Jan
ich bin nicht jeden Tag im Forum, habe auch privat genug zu tun. Rückfrage:
Wenn ich dein Bild sehe vermute ich, das die zu löschende Nummer aus Spalte A stammt, als ID-Nummer, und in Spalte C gelöscht werden soll. Ist das richtig?
Im Bild sehe ich Zeilen nach 12000. Wo soll das suchen anfangen, und wo soll es enden?
Mit Zeile 2 bis zur letzten Zeile? Dafür habe ich mal ein Makro geschreiben. Teste es bitte.
Mein Makro prüft auch ob vor oder hinter der Zahl das | Zeichen steht! Um Fehler zu vermeiden.
mfg Piet
  • Sub Categorie_löschen()
    Dim Adr1 As String, lz1 As Long
    Dim rFind As Range, AC As Range
    'LastZell in Spalte A suchen
    lz1 = Cells(Rows.Count, 1).End(xlUp).Row
    'alle Categorie Nummer in Spalte C suchen
    For Each AC In Range("A2:A" & lz1)
        Set rFind = Columns(3).Find(What:=AC, After:=[c1], LookIn:=xlFormulas, LookAt:= _
            xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:=False)
        'gefundn, Categorie auswerten
        If Not rFind Is Nothing Then
           Adr1 = rFind.Address:  c = Len(AC) + 1
           Do 'Schleife für alle Zeilen
              If InStr(rFind, "|" & AC & "|") Or _
                 Right(rFind, c) = "|" & AC Then
                 rFind.Replace "|" & AC, ""
              ElseIf Left(rFind, c) = AC & "|" Then
                 rFind.Replace AC & "|", ""
              End If
              Set rFind = Columns(3).FindNext(rFind)
              If rFind Is Nothing Then Exit Do
           Loop Until Adr1 = rFind.Address
        End If
    Next AC
    End Sub

  • Anzeige
    AW: Wenn Wert in Zelle, dann löschen
    20.02.2023 17:38:12
    Jan
    Hi Piet, gar kein Problem, ich bin sehr dankbar dass du hilfst und wertschätze es sehr. Ich habe das Marko heute früh um 9 angestoßen und bis eben laufen lassen. Es ist einfach viel, wenn er 50.000 x 50.000 mal durchgehen muss (2.500.000.000 Operationen)...
    Ich überlege ob es noch einen anderen Weg gibt, weil dass ist echt Wahnsinn.

    358 Forumthreads zu ähnlichen Themen

    Anzeige
    Anzeige
    Anzeige

    Links zu Excel-Dialogen

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige