Как объединить последние непустые значения ячеек из нескольких столбцов

Как объединить последние непустые значения ячеек из нескольких столбцов

Мне хотелось бы узнать, как получить последние непустые значения ячеек из нескольких столбцов аккуратным способом, т. е. ожидаемое значение, выделенное зеленым цветом.

введите описание изображения здесь

Я знаю, как получить последнюю непустую ячейку в столбце, применив

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

а затем объединить несколько столбцов, применив

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

Я рассматривал несколько возможных путей, таких как:

  1. преобразовать исходные данные из двумерного массива в одномерный массив и вернуть в виде формулы массива;
  2. использовать массив если;
  3. цикл по строкам, а не по столбцам.

Но я не могу придумать ни одной четкой формулы, которая бы работала должным образом.

Любая помощь будет оценена по достоинству. Спасибо.

решение1

Для одной строки вы можете:

  1. фильтр для непустых ячеек

  2. возьмите самый правый столбец

    =ДАВАТЬ(r,A4:F4,ВЗЯТЬ(ФИЛЬТР(r,r<>""),-1))

введите описание изображения здесь

Чтобы сделать это в одной формуле, просто введите этот расчет в BYROW:

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

введите описание изображения здесь

Редактировать: чтобы применить textjoin, вы можете использовать это:

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

Связанный контент