Clever-Excel-Forum

Normale Version: Wert in Spalte suchen, wenn auffindbar Zelle aus Spalte kopieren und Inhalt ändern
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo zusammen,

ich stoße jetzt schon zum zweiten Mal darauf, eine Funktion für mein Problem zu finden. Deshalb will ich mich jetzt der Lösung doch mal annehmen. Anscheindend brauche ich es öfter...

Es geht um folgendes:
Ich habe zwei Datenquellen:
1. eine Liste mit zwei Spalten, zB:
RUE       I2_20
NRUE     I1_9
AERS     I3_2
AERL     I1_1
SGS       I2_21
RSF       I1_20
RSF1     I3_18

2. eine globale Liste die viel größer ist und auf jeden Fall die Werte aus der ersten Spalte von Liste 1 enthält, z.B.:
                //W.OPCImg.setStatusString("SPS.PIN_RUE",       "I1_IN1");
                //W.OPCImg.setStatusString("SPS.PIN_NRUE",       "I1_IN1");
                //W.OPCImg.setStatusString("SPS.PIN_AERS",       "I1_IN1");
                //W.OPCImg.setStatusString("SPS.PIN_AERL",      "I1_IN11");   

                //W.OPCImg.setStatusString("SPS.PIN_URB",     "I1_IN2");
                //W.OPCImg.setStatusString("SPS.PIN_ERB",    "I1_IN6");
                //W.OPCImg.setStatusString("SPS.PIN_QRB",      "I1_IN4");
                //W.OPCImg.setStatusString("SPS.PIN_EERF",     "I1_IN2");
                //W.OPCImg.setStatusString("SPS.PIN_WNOERF",    "I1_IN5");
                //W.OPCImg.setStatusString("SPS.PIN_LERF",      "I1_IN3");
                //W.OPCImg.setStatusString("SPS.PIN_SGS",       "I1_IN9");
                //W.OPCImg.setStatusString("SPS.PIN_RSF",       "I1_IN8");
                //W.OPCImg.setStatusString("SPS.PIN_OWV",      "I1_IN7");
                //W.OPCImg.setStatusString("SPS.PIN_RSF1",      "I2_IN3");
                //W.OPCImg.setStatusString("SPS.PIN_WNV",       "I1_IN12");
                //W.OPCImg.setStatusString("SPS.PIN_EGBM",      "I1_IN1");
                //W.OPCImg.setStatusString("SPS.PIN_EGFM",      "I1_IN2");
                //W.OPCImg.setStatusString("SPS.PIN_LZFA",      "I1_IN10");
                //W.OPCImg.setStatusString("SPS.PIN_LZFE",      "I1_IN13");
                //W.OPCImg.setStatusString("SPS.PIN_NORI",      "I1_IN2");
                //W.OPCImg.setStatusString("SPS.PIN_ORI",        "I1_IN3");


Ich möchte prüfen, ob die Bezeichnungen der 1. Spalte von Liste 1 in der 2. Liste auftauchen.
Beispiel "RSF":
RSF kann gefunden werden in
                //W.OPCImg.setStatusString("SPS.PIN_RSF",       "I1_IN8");
In diesem Fall möchte ich                
               //W.OPCImg.setStatusString("SPS.PIN_RSF",       "I1_IN8");      
von Liste 2 in die Zelle rechts daneben kopieren, dabei aber die "//" löschen und "I1_IN8" durch "I1_IN20" tauschen.
Alle Einträge aus Liste 2 die keine Gemeinsamkeit mit 1. Spalte von Liste 1 haben, werden unverändert (inkl. Leerzeichen) in die Zelle rechts daneben kopiert.

Anders dargestellt soll am Ende Liste 2 folgendermaßen verändert sein:

                W.OPCImg.setStatusString("SPS.PIN_RUE",       "I2_IN20");
                W.OPCImg.setStatusString("SPS.PIN_NRUE",       "I1_IN9");
                W.OPCImg.setStatusString("SPS.PIN_AERS",       "I3_IN2");
                //W.OPCImg.setStatusString("SPS.PIN_AERL",      "I1_IN1");   

                //W.OPCImg.setStatusString("SPS.PIN_URB",     "I1_IN2");
                //W.OPCImg.setStatusString("SPS.PIN_ERB",    "I1_IN6");
                //W.OPCImg.setStatusString("SPS.PIN_QRB",      "I1_IN4");
                //W.OPCImg.setStatusString("SPS.PIN_EERF",     "I1_IN2");
                //W.OPCImg.setStatusString("SPS.PIN_WNOERF",    "I1_IN5");
                //W.OPCImg.setStatusString("SPS.PIN_LERF",      "I1_IN3");
                W.OPCImg.setStatusString("SPS.PIN_SGS",       "I2_IN21");
                W.OPCImg.setStatusString("SPS.PIN_RSF",       "I1_IN20");
                //W.OPCImg.setStatusString("SPS.PIN_OWV",      "I1_IN7");
                W.OPCImg.setStatusString("SPS.PIN_RSF1",      "I3_IN18");
                //W.OPCImg.setStatusString("SPS.PIN_WNV",       "I1_IN12");
                //W.OPCImg.setStatusString("SPS.PIN_EGBM",      "I1_IN1");
                //W.OPCImg.setStatusString("SPS.PIN_EGFM",      "I1_IN2");
                //W.OPCImg.setStatusString("SPS.PIN_LZFA",      "I1_IN10");
                //W.OPCImg.setStatusString("SPS.PIN_LZFE",      "I1_IN13");
                //W.OPCImg.setStatusString("SPS.PIN_NORI",      "I1_IN2");
                //W.OPCImg.setStatusString("SPS.PIN_ORI",        "I1_IN3");


--> Ich habe die Daten schon mal in eine Exceltabelle eingefügt. Darin werden die Bezeichnungen aus Liste 2 schon rausextrahiert (falls es nützlich für euch ist). :)


Ich würde mich freuen, wenn ich endlich eine Lösung zu dem Thema finden würde  :17: . Ich bekomme es einfach nicht hin alleine.
Hallo,

nach einem ersten Blick: mit VBA sollte es möglich sein (für Formeln sind anderenzuständig)

Eine Lösung mit VBA erfordert aber beim Fragesteller zumindest Grundkenntnisse.

mfg
Falls jemand eine Formellösung hat, wäre ich dankbar :19: .
Bei mir an der Arbeit gibts imer Probleme mit Makros. Die werden tl.w. gesperrt...
so?
Arbeitsblatt mit dem Namen 'Tabelle3'
ABCDEFGHIJKLMNO
1Liste 1Liste 2
2RUEI2_20//W.OPCImg.setStatusString("SPS.PIN_RUE", "I1_IN1");52RUE", "I1_IN1");4RUEW.OPCImg.setStatusString("SPS.PIN_RUE", "I2_20");

ZelleFormel
K2=WENNFEHLER(SUCHEN("_";D2);"0")
L2=WENNFEHLER(ERSETZEN(D2;1;K2;"");"")
M2=WENNFEHLER(SUCHEN("?,";L2);"")
N2=WENNFEHLER(ERSETZEN(L2;M2;25;"");"")
O2=WENN(ZÄHLENWENN(A:A;N2)>0;WECHSELN(WECHSELN(D2;RECHTS(D2;9);SVERWEIS(N2;A1:B10;2;FALSCH)&""");");"//";"");WECHSELN(D2;"//";""))
Verwendete Systemkomponenten: [Windows (32-bit) NT 10.00] MS Excel 2016
Diese Tabelle wurde mit Tab2Html (v2.6.2) erstellt. ©Gerd alias Bamberg
Hey vielen Dank!
Sieht gut aus, auch wenn ich noch nicht ganz hinter die Formel gestiegen bin.
Zwei kleine Fehler habe ich aber noch gefunden.
In Zelle O5 wird hinten etwas noch nicht richtig eingefügt.
In allen Ergebnissen in Spalte O wurde das "//" entfernt. Es soll aber nur bei den Ergenissen entfernt werden, die in Liste 1 auftauchen.

Versuche mich parallel auch mal an der Problemlösung und poste wenn ich erfolg hatte.
So hab glaube ich die Lösung. Siehe Anhang.
Musste aber die Gesamtformel aufdröseln um sie zu verstehen ;)