
Мне хотелось бы узнать, как получить последние непустые значения ячеек из нескольких столбцов аккуратным способом, т. е. ожидаемое значение, выделенное зеленым цветом.
Я знаю, как получить последнюю непустую ячейку в столбце, применив
=IFERROR(LOOKUP(2,1/(INDIRECT("A1:A"&ROW())<>""),INDIRECT("A1:A"&ROW())),"")
а затем объединить несколько столбцов, применив
=TEXTJOIN("",TRUE,G4:L4)
Я рассматривал несколько возможных путей, таких как:
- преобразовать исходные данные из двумерного массива в одномерный массив и вернуть в виде формулы массива;
- использовать массив если;
- цикл по строкам, а не по столбцам.
Но я не могу придумать ни одной четкой формулы, которая бы работала должным образом.
Любая помощь будет оценена по достоинству. Спасибо.
решение1
Для одной строки вы можете:
фильтр для непустых ячеек
возьмите самый правый столбец
=ДАВАТЬ(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))
)
)
)
)