Bestimmten Wert aus Spalte mit VBA suchen, kopieren und einfügen

  • Excel

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von Achim M..

    Bestimmten Wert aus Spalte mit VBA suchen, kopieren und einfügen

    Hallo zusammen,

    ich hätte da mal ein kleines Problem. Folgender Sachverhalt:
    Ich habe eine Excel-Datei mit relativ vielen Zeilen und Spalten. Ich möchte jetzt ein Makro aufbauen, in dem ich aus der Spalte L (Zeilenzahl = offen) einen Wert suche und ausgeben lassen will.Diesen Wert möchte ich in die neu eingefügte Spalte davor hineinkopieren.

    Visual Basic-Quellcode

    1. Columns("L:L").Insert Shift:=xlToRight


    Der Inhalt aus der nun lautenden Spalte M kann wie folgt aussehen:
    Inbox_Anfrage_ABC, ABC0019_Bohrmaschine_ P6: Serienreifmachung
    Fokus SWAP, XYZ0006_2_Alpha
    Inbox_Anfrage_ABC, ABC0019_Bohrmaschine
    6215_Umstellung auf neue Steuerung, Umstellung übergreifend
    Umstellung auf H9, XYZ0001_Umstellung Phase 1
    Monitoring_Anbausatz_Messe, Fokus ABC, ABC0013_Monitoring Messe 2024
    Anfrage_XYZ, XYZ0012_neue Ausführung_ P1: Ideenfindung


    Was ich jetzt jeweils links daneben einfügen möchte, sind die entsprechenden Werte ABC0019 bzw. XYZ0001 usw.. Dadurch dass es sich hierbei um einen Wertebereich ABC0000 bis ABC9999 bzw. XYZ0000 bis XYZ9999 handelt, macht die Sache für mich seeeehr kompliziert. Wenn kein Wert gefunden wird (siehe 4. Zeile), soll auch nichts kopiert werden.
    Ich habe das hier schonmal angefangen:

    Visual Basic-Quellcode

    1. Dim finden As Range
    2. Set finden = Range("M:M").Find(What:="ABC\d{4}")


    Ich weiß aber nicht, ob das so richtig ist und wie ich nun den gefundenen Teil kopieren kann.
    Vielleicht so:

    Visual Basic-Quellcode

    1. Selection.Copy Selection.Offset(, -1)


    Aber da fehlt noch einiges...
    Für etwas Unterstützung wäre ich sehr dankbar.

    PS: Ich würde mich als VBA-Anfänger bezeichnen. Kann zwar vorhandene Strukturen relativ gut verstehen, nur beim Neuaufbau tue ich mich schwer.

    Vielen Dank schonmal.
    Anstelle der

    Visual Basic-Quellcode

    1. Selection.Copy Selection.Offset(, -1)


    ich habe aber mittlerweile so viel herumprobiert und gelöscht und verändert, dass jetzt gar nichts mehr passt.
    Dachte, ich fange nochmal neu an und wenn möglich mit Unterstützung von euch.
    Dann die Frage: Warum muss die Spalte, in der die gefundenen Werte stehen sollen, erst eingefügt werden?
    Kann die nicht permanent da sein? Dann brauchts gar kein Makro mehr.

    =WENN(ISTZAHL(WERT(TEIL(INDEX(TEXTTEILEN(M2;{",";":"};;WAHR;0);1;2);5;4)));TEIL(INDEX(TEXTTEILEN(M2;{",";":"};;WAHR;0);1;2);2;7);"")

    Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von „Haudruferzappeltnoch“ ()

    Das Ding ist, die Tabelle wird aus einem Programm generiert und bei Bedarf jedes Mal neu importiert.
    Klar kann ich dann jedes Mal die Spalte manuell einfügen und dann die Funktion ausführen. Ich dachte aber, wenn ich ein Makro habe, kann ich dieses immer wieder einfügen und bei Bedarf anpassen (falls sich die Suchwerte ändern).
    Keinen Einfluss, genau. Ich bekomme die Werte nur auf diese eine Weise heraus und muss dann die zu suchenden Werte herausfiltern.
    So war der Plan, dass ich das Makro in meiner Vorlage habe, die Tabelle importiere und dann darauf anwende.
    Alternativ kann ich das Makro exportieren und in die jeweils neue Excel importieren (und dann u.U. anpassen).