Хорошо, хорошо, вот довольно грубый подход для Excel только для поиска последней строки - используйте Offset, чтобы получить каждую строку от B4 и далее на всем листе, затем промежуточный итог, чтобы увидеть, что он содержит непустые ячейки, а затем умножить наномер строки и используйте max, чтобы найти самый большой номер строки с некоторым содержимым:
=MAX((SUBTOTAL(3,OFFSET(B4,ROW(B4:B1048576)-ROW(B4),0,1,16384-COLUMN(B4)))>0)*ROW(B4:B1048576))
=MAX((SUBTOTAL(3,OFFSET(B4,0,COLUMN(B4:XFD4)-COLUMN(B4),1048576-ROW(B4),1))>0)*COLUMN(B4:XFD4))
Должен быть введен как формула массива, используя Ctrl Shift Enter
Ширину и глубину можно получить тривиально, вычитая строку или столбец B4.

Ответнемного вяло, как и следовало ожидать, но терпимо.
Вы также можете использовать Countif:
=MAX((COUNTIF(OFFSET(B4,ROW(B4:B1048576)-ROW(B4),0,1,16384-COLUMN(B4)),"<>")>0)*ROW(B4:B1048576))
=MAX((COUNTIF(OFFSET(B4,0,COLUMN(B4:XFD4)-COLUMN(B4),1048576-ROW(B4),1),"<>")>0)*COLUMN(B4:XFD4))
, но это не решает проблему смещения как изменчивой функции, поэтому любое изменение вэлектронная таблица заставляет пересчитать.
Скорость может быть значительно увеличена, если вы можете ограничить диапазон.Также можно использовать подход Google Sheets, упомянутый в других ответах, например,
=MAX(IF(B4:L20<>"",ROW(B4:L20)))
Однако при использовании для всего листа Excel не хватает ресурсов.