Esta pode não ser a fórmula mais eficiente, mas isso funciona
=IF(AND(ISBLANK(B3); ISBLANK(C3));
SUM(INDIRECT("F"&ROW()+1&":
F"&MATCH(TRUE; INDEX($B4:$B$16=""; 0); 0)+ROW()-1));
C3*2)
Explicação
AND(ISBLANK(B3); ISBLANK(C3));
detecta quando iniciar a fórmula da soma. Exige que ambas célula B3
e C3
estejam vazias (se você usar apenas C3
, então C4
e C5
também acionará a fórmula de soma, em vez de duplicar seu valor )
INDIRECT( ... )
forma o intervalo a ser usado no SUM
"F"&ROW()+1&":
o intervalo começa em F
e abaixo da linha atual (neste exemplo F4
)
F"&MATCH(TRUE; INDEX($B4:$B$16=""; 0); 0)+ROW())
e termina na linha F
na próxima célula em branco na coluna B
Observação: lembre-se de que o intervalo começa e termina uma linha abaixo da linha atual. Observe também a posição dos sinais absolutos ( $ )
Mais explicações sobre MATCH(TRUE; INDEX($B4:$B$16=""; 0); 0)+ROW()-1
Eu encontrei a fórmula aqui
Primeiro, INDEX($B4:$B$16=""; 0)
cria uma matriz, seja B4 = ""
e B5 = ""
e assim por diante. Você pode ver essa matriz colocando a fórmula na linha 1 em qualquer coluna e alterando 0
para ROW()-1
e arrastando a fórmula para baixo.
FALSE
FALSE
FALSE
TRUE
and so on...
Em seguida, MATCH(TRUE; ... ; 0)
encontrará o primeiro TRUE
, que é a primeira próxima linha em branco após esta linha (retornando a linha índice 3 )
No entanto, o resultado é o índice da matriz 3 , em vez de número da linha . Então, adicionamos o índice com a linha atual, 3 + 3 e voila! Temos o número da linha
da próxima linha em branco. Basta adicionar -1
para ter certeza de que estamos somando o intervalo correto de F4:F5
, não F4:F6
.