複数の列の最後の空白でないセルの値を連結する方法

複数の列の最後の空白でないセルの値を連結する方法

複数の列から最後の空白でないセルの値をきちんと取得する方法を知りたいです。つまり、期待される値が緑色で強調表示されます。

ここに画像の説明を入力してください

列内の最後の空白でないセルを取得する方法を知っています。

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

そして、複数の列を結合して

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

次のようないくつかの可能な方法を考えました。

  1. ソース データを 2D 配列から 1D 配列に変換し、配列数式として返します。
  2. 配列を使用する場合は、
  3. 列ではなく行ごとにループします。

しかし、きちんとした公式を思いつかず、適切に動作しません。

ご協力いただければ幸いです。ありがとうございます。

答え1

1 行につき、次の操作を実行できます。

  1. 空白でないセルをフィルターする

  2. 一番右の列を取る

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

ここに画像の説明を入力してください

これを単一のスピル式で実行するには、その計算を BYROW に入力します。

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

ここに画像の説明を入力してください

編集: テキスト結合を適用するには、以下を使用できます:

=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))
            )
        )
    )
)

関連情報