Это может быть не самая эффективная формула, но это работает
=IF(AND(ISBLANK(B3); ISBLANK(C3)); SUM(INDIRECT("F"&ROW()+1&": F"&MATCH(TRUE; INDEX($B4:$B$16=""; 0); 0)+ROW()-1)); C3*2)
объяснение
AND(ISBLANK(B3); ISBLANK(C3));
определяет, когда начинать формулу суммы. Это требует, чтобы и ячейка, B3
и C3
была пустой (если вы используете только C3
, то C4
и C5
также вызовет формулу суммы, вместо того, чтобы удваивать их значение)
INDIRECT( ... )
образует диапазон, который будет использоваться в SUM
"F"&ROW()+1&":
диапазон начинается F
с текущей строки и ниже (в этом примере F4
)
F"&MATCH(TRUE; INDEX($B4:$B$16=""; 0); 0)+ROW())
и заканчивается F
строкой в следующей пустой ячейке столбцаB
Примечание: пожалуйста, помните, что диапазон начинается и заканчивается на одну строку ниже текущей строки. Также обратите внимание на положение абсолютных знаков ( $ )
Дальнейшее объяснениеMATCH(TRUE; INDEX($B4:$B$16=""; 0); 0)+ROW()-1
я нашел формулу здесь
Во- первых, INDEX($B4:$B$16=""; 0)
создает массив ли B4 = ""
и B5 = ""
так далее. Вы можете увидеть этот массив, помещая формулу в строке 1 на любой колонке, и изменить 0
к ROW()-1
и перетащить формулу вниз.
FALSE FALSE FALSE TRUE and so on...
Затем MATCH(TRUE; ... ; 0)
найдем первую TRUE
, то есть первую следующую пустую строку после этой строки (возвращая индекс 3 )
Тем не менее, результатом является индекс массива 3, а не номер строки . Таким образом, мы добавляем индекс с текущей строкой, 3 + 3 и вуаля! У нас есть номер следующей пустой строки. Просто добавьте, -1
чтобы убедиться, что мы суммируем правильный диапазон F4:F5
, а не F4:F6
.