У меня есть 1 решение, но оно имеет те же ограничения, что и решение, упомянутое ADW, и состоит в том, что ему требуется 2 строки перед первым текстовым блоком. Однако мне удалось поместить все формулы в 1 ячейку.
=if(AND(A18="",A16="",A17=""),row(),if((A16="")*(A17=""),textjoin("<break time=""1000ms""/>", 1,indirect("A"&row()&":"&concatenate("A",min(arrayformula(if((B19:B109="")*(B20:B110=""),"",row(B18:B))))))),""))
Это формула для ячейки B3, и вам просто нужно перетащить ее вниз по столбцу.
С другой стороны, я думаю, что решения ADW хороши, но есть Небольшая ошибка в решении ADW A, вам нужно будет добавить -1 в формулу, изменив его с:
=indirect("A"&row()&":A"&row(indirect("E"&if(B3="","", min(B4:B)))))
на
=indirect("A"&row()&":A"&row(indirect("E"&if(B3="","", min(B4:B)-1))))
Я комментирую здесь только как недостаточно репутации, чтобы комментировать его решение.