Inhalte nebeneinander sortieren
#11
Hi

also das mit dem Zusatzvertrag ist für mich nicht logisch, und mir fällt da auf die Schnelle nichts ein.
nach der restlichen Logik gehören die Zusatzverträge zu A und B (die stehen in Klammern dahinter)

für den Rest so:

Schritt 1: Ziehe B7:C7 nach F1:G1 (oder wo sonst platz ist
Schritt 2: in Zelle B2 diese Formel, diese Formel dann von B2 nach C-ende kopieren
Code:
=WENNFEHLER(TEXTNACH(ZEICHEN(10)&TEXTVOR(LINKS(F$1;SUCHEN(GLÄTTEN(A2);F$1));"(";-1);ZEICHEN(10);-1);"")

die Formel sucht nach dem Namen in Spalte A und gibt dann den Text aus, der zwischen dem Zeilenumbruch und der Klammer "(", die sich als nächstes vor dem Anzeigenamen befinden, aus.

Gruß Daniel
Antworten Top
#12
Hallo Daniel,
mega gut, das ist genau das, was ich gesucht habe. Danke!
Nur, wenn in der Klammer mehrere Unternehmen aufgelistet sind, scheint es nicht zu funktionieren. Also wenn hinter Datum und Vertragsversion in der Klammer mehrere Unternehmen stehen, weil alle dasselbe Datum und dieselbe Vertragsversion haben).

Die Sortierung des Zusatzvertrags in Zeilen kann man ignorieren, das ist so schlecht gepflegt, dass es sich nicht sortieren lassen wird.

Gruß und schönes Wochenende!
Antworten Top
#13
Nur, wenn in der Klammer mehrere Unternehmen aufgelistet sind, scheint es nicht zu funktionieren.

hast du einen konkreten Fall?

wie äußert sich denn dieses "scheint nicht zu funktionieren"?

mit dieser schwammigen Beschreibung lässt sich keine Fehlerursache ermitteln.
Antworten Top
#14
Hallo

da ist mein Makro am Anfang auch drüber "gestolpert".  Ich habe es aber schnell gemerkt.
Bitte schau mal ob dir meine Lösung weiterhilft?  Würde mich freuen ....

Wenn du uns für Zusatzverträge eine neue Spalte angibst kann man die Daten auch da hineinschreiben.

mfg Gast 123


Angehängte Dateien
.xlsm   Mappe1 - Daten zuordnen.xlsm (Größe: 27,5 KB / Downloads: 8)
Antworten Top
#15
(07.08.2025, 19:15)Magdalika schrieb: Auch wichtig: Die Zeilen, in denen Zusatzvertrag steht (im Beispiel nur eine), müssen auch im Sheet "Ergebnis" auf die Unternehmen folgen, unter denen sie in "Tabelle 1" stehen. Im Beispiel ist das JJ. Jetelia Mobility. 

Idealerweise sollte der Lösungsweg relativ gut kopierbar sein, da die Vorlage von verschiedenen Personen genutzt werden müsste, die die Tabellen selbst erstellen sollen.

Auch dieses Beispiel ist zu schön um wahr zu sein, es enthält keine Fehler/Sonderfälle und ich wette das diese später auftreten.

Die Firmen in den () können doppelt vorkommen (Mehrere verschiedene Verträge oder versch.Datum bei gleichem Vertrag).
Die Firmen in den () können in Spalte A nicht vorkommen (durch Tippfehler).

Dann verstehe ich nicht was Du da kopieren willst. Wenn wir mal den Fall nehmen das wir einen Ordner haben in dem 100 dieser Dateien liegen, dann können wir alle diese Dateien in einem Rutsch einlesen und verarbeiten.

Wenn die Dateien einen sinnigen Fall-Namen haben, dann können wir eine Datenbank mit den Feldern Fall;Firma;Partnernummer;ADatum;AVertrag;BDatum;BVertrag erzeugen. Und daraus kannst Du alle benötigten Informationen ziehen... auf welche Weise auch immer.

Würde Dir so eine Lösung mit Power Query nutzen oder reicht Dir das Makro?

Andreas.
Antworten Top
#16
Vermutlich entstehen die Sonderfälle zum Teil durch Tippfehler. Die durch Tippfehler entstandenen Sonderfälle ließen sich, durch eine pflegbare Ersetzungstabelle, mehr oder weniger gut abfangen und lässt sich auch leicht mit Power Query realisieren. Weitere Sonderfälle, die nicht aus Tippfehlern resultieren, werden vermutlich erst beim testen mit Echtdaten erkannt.

Aber das sich ja der TE an Power Query versucht hat, hier mal eine Variante, die eine Ausgangsbasis für eine finale Version sein kann. Bei werden bereits die Daten einer Mappe aufbereitet, die im benannten Feld "pm_import" (B3) definiert wird. Wie schon richtig angemerkt, lässt sich das auch ganz einfach auf einen Import von einem Ordner umstellen.

Final würde ich für die 2 fast identischen Abfragen Verträge_A und Verträge_B den gemeinsamen Teil in eine Funktion auslagern. Aber da ja Funktionen nicht schrittweise getestet werden können und vermutlich noch Änderungen erforderlich werden, die u.U. der TE selbst durchführen kann, habe ich zuerst einmal auf die Funktion verzichtet.


Angehängte Dateien
.xlsx   cef - Inhalte nebeneinander sortieren (PQ).xlsx (Größe: 23,18 KB / Downloads: 10)
Antworten Top
#17
Sorry, ich hatte vergessen zu erwähnen, dass ich die Mappe aus #10 als Input für die Abfragen verwendet habe.
Antworten Top
#18
Hallo,

ich bin von der Excel-Mappe aus #10 ausgegangen und habe im Arbeitsblatt "Ergebnis" neben deinen Vorgabeergebnissen ab Spalte G meine 4 dynamischen Arrayformeln eingefügt, sodass man einen Vergleich mit deinen Werten anstellen kann. Der einzige Unterschied, der mir aufgefallen ist, ist in Zeile 36+37 enthalten: Bei mir fehlt das Datum vor dem "Zusatzvertrag...".

Also Arbeitsblatt "Ergebnis" in Zelle G1 die Überschriftenformel (im Bereich G1:J1):
=Tabelle1!A1:D1

In Zelle G2 die Spaltenformel für die Anzeigenamen (im Bereich G2:G44):
=A2:A44

In Zelle H2 die Spaltenformel für die Verträge/A-Version (im Bereich H2:H44):
=LET(AnzNm; $G$2:$G$44; ListeV; Tabelle1!$B$2:$B$44; r; REDUCE(""; ListeV; LAMBDA(akk;si; LET(tsi; TEXTTEILEN(si; ; ZEICHEN(10)); WENNFEHLER(VSTAPELN(akk; tsi); akk)))); ArrayV; WEGLASSEN(r; 1); NACHZEILE(AnzNm; LAMBDA(Nm; XVERWEIS(GLÄTTEN(Nm); ArrayV; REGEXEXTRAHIEREN(ArrayV; "([A-Za-z].*)\s\("; 2); ""; 3))))

In Zelle I2 die Spaltenformel für die Verträge/B-Version (im Bereich I2:I44):
=LET(AnzNm; $G$2:$G$44; ListeV; Tabelle1!$C$2:$C$44; r; REDUCE(""; ListeV; LAMBDA(akk;si; LET(tsi; TEXTTEILEN(si; ; ZEICHEN(10)); WENNFEHLER(VSTAPELN(akk; tsi); akk)))); ArrayV; WEGLASSEN(r; 1); NACHZEILE(AnzNm; LAMBDA(Nm; XVERWEIS(GLÄTTEN(Nm); ArrayV; REGEXEXTRAHIEREN(ArrayV; "([A-Za-z].*)\s\("; 2); ""; 3))))

In Zelle J2 die Spaltenformel für die Partnernummer (im Bereich J2:J44):
=XVERWEIS($G$2:$G$44;Tabelle1!$A$2:$A$44;Tabelle1!$D$2:$D$44)

Die beiden Formeln in H2 und I2 sind gleich, nur der Zellbereich für "ListV" ist natürlich verschieden (Spalten B bzw. C aus Arbeitsblatt "Tabelle1").


Angehängte Dateien
.xlsx   Magdalika_Mappe1.xlsx (Größe: 20,24 KB / Downloads: 1)
Gruß Anton.

Windows 10 64bit
Office365 32bit
Antworten Top
#19
Hallo,

ich habe aus dem 4 Formeln der letzten Version eine einzige Formel in Zelle G1 erstellt:
PHP-Code:
=LET(
    AnzgNamen$A$2:.$A$999;
    Kopf_DatenTabelle1!$A$1:.$D$999;
    Kommentar1"------- Aufbereitung ------";
    KopfZEILENWAHL(Kopf_Daten1);
    DatenWEGLASSEN(Kopf_Daten1);
    PartnerNamenSPALTENWAHL(Daten1);
    VerträgeASPALTENWAHL(Daten2);
    VerträgeBSPALTENWAHL(Daten3);
    PartnerNrSPALTENWAHL(Daten4);
    Kommentar2"------- Ausgabematrix -----";
    Vtrg_AVersVertragsVersionen(AnzgNamenArrVerträgePartner(VerträgeA));
    Vtrg_BVersVertragsVersionen(AnzgNamenArrVerträgePartner(VerträgeB));
    PartnerNummernXVERWEIS(AnzgNamenPartnerNamenPartnerNr);
    Kommentar3"------- Ausgabe -----------";
    VSTAPELN(KopfHSTAPELN(AnzgNamenVtrg_AVersVtrg_BVersPartnerNummern))


wobei ich im Namensmanager 2 benutzerdef. Funktionen angelegt habe:
PHP-Code:
/** 
Erzeugt aus den Vertragsauflistungen 'ListenVtrgPart' eine 2-spaltige Matrix
aus Verträgen (=Spalte1) und dazugehörigen Partnern (=Spalte2).
Parameter: ListenVtrgPart
*/
ArrVerträgePartner LAMBDA(ListenVtrgPartLET(
    rREDUCE(
        "";
        ListenVtrgPart;
        LAMBDA(akksi;  LET(
            tsiTEXTTEILEN(si" ("ZEICHEN(10));
            WENNFEHLER(VSTAPELN(akktsi); akk)
        )));
    WEGLASSEN(r1)
));;
/**
Sucht den 'AnzeigeNamen' in der 2.Spalte der Matrix 'ArrVertrPart' (=Liste der dazugehörigen Partner)
und gibt die Vertragsversion aus der 1.Spalte zurück.
Parameter1: AnzeigeNamen; Parameter2: ArrVertrPart
*/
VertragsVersionen LAMBDA(AnzeigeNamenArrVertrPart;
    NACHZEILE(
        AnzeigeNamen;
        LAMBDA(Nm;
            XVERWEIS(
                GLÄTTEN(Nm);
                SPALTENWAHL(ArrVertrPart2);
                REGEXEXTRAHIEREN(
                    SPALTENWAHL(ArrVertrPart1);
                    "((\d|\.)*?\s(?=Zusatz))?([A-Za-z].*)"
                );
                "";
                3
            
)
)));; 
Damit konnte ich auch die Ausnahme bei den Zusatzverträgen exakt nach deiner Vorlage abbilden (mit einer Look-ahead-Assertion in RegEx).


Angehängte Dateien
.xlsx   Magdalika_Mappe1.xlsx (Größe: 21,65 KB / Downloads: 4)
Gruß Anton.

Windows 10 64bit
Office365 32bit
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste