So verketten Sie die Werte der letzten nicht leeren Zellen aus mehreren Spalten

So verketten Sie die Werte der letzten nicht leeren Zellen aus mehreren Spalten

Ich möchte wissen, wie man die letzten nicht leeren Zellenwerte aus mehreren Spalten auf saubere Weise erhält, d. h. den erwarteten Wert grün hervorgehoben

Bildbeschreibung hier eingeben

Ich weiß, wie man die letzte nicht leere Zelle in einer Spalte erhält, indem man

=IFERROR(LOOKUP(2,1/(INDIRECT("A1:A"&ROW())<>""),INDIRECT("A1:A"&ROW())),"")

und verbinden Sie dann mehrere Spalten durch Anwenden

=TEXTJOIN("",TRUE,G4:L4)

Ich habe über mehrere Möglichkeiten nachgedacht, wie zum Beispiel:

  1. Transformieren Sie die Quelldaten vom 2D-Array in ein 1D-Array und geben Sie sie als Array-Formel zurück.
  2. Array verwenden, wenn;
  3. Schleife zeilenweise statt spaltenweise.

Aber mir fällt keine nette Formel ein, die richtig funktioniert.

Ich wäre für jede Hilfe dankbar. Vielen Dank.

Antwort1

Für eine Zeile können Sie:

  1. Filter für nicht leere Zellen

  2. nimm die Spalte ganz rechts

    =LET(r,A4:F4,TAKE(FILTER(r,r<>""),-1))

Bildbeschreibung hier eingeben

Um dies in einer einzigen übergelaufenen Formel zu tun, geben Sie diese Berechnung einfach in BYROW ein:

=LET(d,A4:F16,BYROW(d,LAMBDA(r,TAKE(FILTER(r,r<>""),-1))))

Bildbeschreibung hier eingeben

Bearbeiten: Um den Textjoin anzuwenden, können Sie Folgendes verwenden:

=LET(
    d, A4:F16,
    BYROW(
        d,
        LAMBDA(r,
            LET(
                lastletter, TAKE(FILTER(r, r <> ""), -1),
                position, XMATCH(lastletter, r),
                seqend, CODE(INDEX(lastletter, 1, 1)),
                seqstart, INDEX(seqend - position + 1, 1, 1),
                seq, SEQUENCE(seqend - seqstart + 1, , seqstart),
                TEXTJOIN("", TRUE, CHAR(seq))
            )
        )
    )
)

verwandte Informationen