Wenn solche Operationen automatisiert werden sollen, Makaveli,
muss der Primärtext in strukturierter Form vorliegen, d.h., man muss Textblöcke bilden können. Das ist bei deinem Bsp möglich. Wenn das immer so ist, wobei es nicht unbedingt Leer-, aber wenigstens Sonderzeichen sein sollten, die die Blöcke verbinden (zumindest den relevanten Textteil umschließen!), ist das auch per Formel möglich, wie es ja auch Uwe demonstriert hat. Wenn man nun alle deine Bedingungen berücksichtigen wollte, sollte das Textbsp eher so aussehen:
AAA222 BBBB 8CDE44FG mabcdef116asd XYZABCDEF
Damit käme Uwes spezielle UDF gut zurecht und ebenfalls mit anderen Varianten und auch, falls die Bedingungen nicht erfüllt sind. Allerdings müssen die Textblöcke dann auch wirklich stets mit Leerzeichen verbunden werden!
Mit allgemeineren UDFs würde die Formel deutlich länger werden, nur mit Standard-Xl-Funktionen wahrscheinlich gigantisch. Ich habe das mal mit ersteren und diversen Sonderzeichen als Blockverbinder für folgende Primärtexte versucht:
AAA222,BBBB|8CDE44FG:mabcdef116asd-XYZABCDEF
AAABBB,CCCdddEEE|8CDE44FG:lmn1opq2rst3uvw4xyz-ABCDEFghijkl
AABBB CDE44FG0 1opq2rst3uvw4xyz - ABCDEFghijkl
Dabei kam folgende 1zellige (singulare) Matrixformel zum Einsatz:
{=GLÄTTEN(VJoin(WENN((
normVTextLg>7)*ISTFEHLER(--LINKS(
normVText))*MMULT(1^SPALTE($A1:$J1);--(LÄNGE(
korrVText)<
normVTextLg));
normVText;"")))}
Damit diese übersichtlich bleibt, wurden sich wiederholende Teilformeln in benannte Formeln (Namen definieren!) ausgelagert:
für
normVTextLg: =LÄNGE(
normVText)
für
normVText: =VSplit(MaskOn(ERSETZEN($A2;1;6;"");"anu"))
für
korrVText: =WECHSELN(
normVText;ZEILE(A$1:A$10)-1;"")
Der
normVText wird folglich so gebildet, dass erst die ersten 6 Zeichen entfernt und dann alle Sonderzeichen (auch mehrere hintereinander) durch
ein Leerzeichen ersetzt werden. Ist der relevante Textteil aber stets von Leerzeichen eingeschlossen, kann die UDF
MaskOn entfallen (um Uwes UDF zu testen, habe ich übrigens zuvor
MaskOn auf die gezeigten Primärtexte angewendet, allerdings in einer separaten Zelle, weil seine UDF unnötigerweise an 2 Stellen* auf Zellbereiche als Quelle festgelegt ist).
Für den
korrVText werden alle Ziffern im
normVText entfernt, um so aus der Längendifferenz zwischen beiden Texten auf Relevanz schließen zu können.
Alles Weitere erklärt sich aus den verwendeten Funktionen und der Hauptformel.
Die UDFs
MaskOn (2.Posting von 2014!) und
VSplit (Version1.1 oder eine Trivial-UDF wie
Splitt oder ähnliche wie
Trennen ist hier wohl ausreichend) sind im
Herber-Archiv enthalten (
www.herber.de/forum → Kopf-
Button RECHERCHE, 1.Editierzeile für Stichworteingabe verwenden).
* Im UDF-Kopf muss As Range und in Programmzeile 5 .Value entfallen, wenn die UDF auch mit direkter oder per Teilformel (Ausdruck) erzeugter Textangabe zurecht kommen soll.
Gruß, Castor