LINUX.ORG.RU

Libreoffice Calc поиск первой не пустой ячейки сверху

 


0

1

Дано

  А Б
1 1 9
2   8
3   7
4 4 6
5   5

Нужно

  А Б В
1 1 9 19
2   8 18
3   7 17
4 4 6 46
5   5 45

Если в текущей строке в колонке А содержится непустое значение, то конкатинируем в колонке В текущей строки значение А-текущей строки и Б-текущей строки.

Если в текущей строке в колонке А содержится пустое значение, то для указанной выше конкатенации берем первое сверху (или последнее снизу, если считать от А1) непустое значение относительно текущей строки и конкатинируем его с Б-текущей строки, например, 18 в ячейке В2, потому что А2 пустое, а ближашее сверху непустое это 1 (А1).

Как конкатинировать понятно, но надо как-то найти это первое непустое сверху или последнее непустое снизу. ДумалLOOKUP приспособить как-то можно, только так вот (пример для 5-той строки)

=LOOKUP(NOT(ISBLANK($A$1:A5));$A$1:A5;$A$1:A5)

Не работает, потому что ISBLANK не умеет в диапазоны. А так просто не работает

=LOOKUP("<>0";$A$1:A5;$A$1:A5)

Сначала час сижу и пытаюсь решить сам в обнимку с гуглом, а потом через 10 минут после поста тут дохожу, как это сделать xD

		CONCAT(EN;CN)	IF(ISBLANK(AN);0;1)	LOOKUP(1;1/$D$2:DN;$A$2:AN)
1	9	19	        1	                1
	8	18	        0	                1
	7	17	        0	                1
4	6	46	        1	                4
	5	45	        0	                4

Чтобы LOOKUP искал в правильном направлении, оказывается, можно перевернуть диапазон деля единицу на этот диапазон. А однострочник для моей колонки В будет такой

=CONCAT(LOOKUP(1;1/$Г$2:Г2;$A$2:A2);Б2)

ГN здесь это доп. колонка с проверкой на пустоту (1 или 0).

kardjoe
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.