Найти первую ячейку, которая не является пустой и отличается от заданного значения - PullRequest
0 голосов
/ 27 февраля 2019

Проблема

Я ищу первую непустую ячейку в диапазоне 'Sheet1'!$I8:$AG8, затем собираю COLUMN этой ячейки, затем получаю значение (назовите его date)ячейки, которая на две строки выше первого диапазона, используя следующую формулу массива:

INDEX('Sheet1'!$A$6:$AG$6;1;COLUMN('Sheet1'!$I8)-1+MATCH(FALSE;ISBLANK('Sheet1'!$I8:$AG8);0))

Это прекрасно работает.

Теперь я хочу сделать то же самое, но если date равно today() я хочу найти следующее непустое значение в диапазоне 'Sheet1'!$I8:$AG8.

Для этого я поместил в ячейку F6 следующую формулу для создания обновленногострока диапазона, которая начинается после первой непустой ячейки диапазона 'Sheet1'!$I8:$AG8 (примечание: row()+2 требуется, потому что ячейка, в которую я помещаю значение, находится на другом листе в ячейке, расположенной на 2 строки ниже, и значение "33""соответствует столбцу AG):

="'Sheet1'!"&  ADDRESS(ROW()+2;COLUMN('Sheet1'!$I8)+MATCH(FALSE;ISBLANK('Sheet1'!$I8:$AG8);0))&":"&ADDRESS(ROW()+2;33)

Тогда, если date равно today(), я использую содержимое F6 в формуле массива следующим образом:

INDEX(
    'Sheet1'!$A$6:$AG$6;1;
    COLUMN(INDEX(Sheet1!$A$6:$AG$6;1;COLUMN(Sheet1!$I8)+MATCH(FALSE;ISBLANK(Sheet1!$I8:$AG8);0)))
    -1
    +MATCH(FALSE;ISBLANK(INDIRECT(F6));0)
)

Снова это прекрасно работает , я получаю то, что ищу ... но я должен сделать то же самое мультиНесколько раз (что приводит к нескольким вспомогательным столбцам).

Где я застрял

Я попытался объединить две вышеупомянутые формулы массива в одну, чтобыизбавиться от старшего столбца, который содержит ячейку F6.Я не мог заставить его работать (он возвращает систематически первую ячейку нового диапазона, а не первую непустую ячейку):

=INDEX(
    'Planning Briefs'!$A$6:$AG$6;1;
    COLUMN(INDEX(Sheet1!$A$6:$AG$6;1;COLUMN(Sheet1!$I8)+MATCH(FALSE;ISBLANK(Sheet1!$I8:$AG8);0)))
    -1
    +MATCH(FALSE;ISBLANK(INDIRECT("'Sheet1'!"& ADDRESS(ROW()+2;COLUMN(Sheet1!$I8)+MATCH(FALSE;ISBLANK(Sheet1!$I8:$AG8);0))&":"&ADDRESS(ROW()+2;33)));0)
)

Вопрос

Есть ли способ заставить его работать за один проход или мне придется разделить его на два?

Заранее спасибо за помощь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...