Tenho uma string "2023-1" que representa o primeiro trimestre de 2023. No Excel, tenho uma fórmula:
=IF(AND($A2 => [value to calculate];$A2 <= "2023-1");$B2;0)
Agora [valor a ser calculado] deve ter o valor "2022-2" (sempre o 4º trimestre anterior ao segundo valor na fórmula (neste caso 2023-1).
Mais exemplos:
- 2023-4 deve resultar em 2023-1
- 2023-3 deve resultar em 2022-4
- 2023-2 deve resultar em 2022-3
e assim por diante.
Não quero usar VBA, apenas fórmulas comuns do Excel. Qual seria uma maneira de fazer isso?
Já experimentei usar TEXTBEFORE e TEXTAFTER e subtrair 4 da segunda parte da string. Mas ainda preciso fazer alguns ajustes, ou seja, 4-4 vira 0, mas deveria ser 1 (primeiro trimestre). 3-4 = -1, mas deveria ser o 4º trimestre do ano anterior.
Existem soluções melhores para resolver isso sem algumas instruções IF aninhadas?
Finalmente cheguei à fórmula abaixo:
=LET(BaseDate;SWITCH(INT(TEXTAFTER(A7;"-"));1;"1-1-" & TEXTBEFORE(A7;"-");2;"1-4-" & TEXTBEFORE(A7;"-");3;"1-7-" & TEXTBEFORE(A7;"-");4;"1-10-" & TEXTBEFORE(A7;"-")); QuarterStart;EDATE(DATE(YEAR(BaseDate);FLOOR.MATH(MONTH(BaseDate)-1;3)+1;1);-6);YearValue;YEAR(QuarterStart);QuarterValue;INT((MONTH(QuarterStart)+2)/3);YearValue & "-" & QuarterValue )
Na célula A7, o valor é algo como 2023-2 (segundo trimestre de 2023). Eu "converti" isso para a data de início do trimestre. Nesse caso, a data de início se torna 04/01/2023 e, na fórmula EDATE, subtraí 6 meses dessa data de início.
O resultado é 2022-3.
Se eu subtrair 9 meses, o resultado será 2022-2.
Você pode tentar isto:
Observe que o trimestre atual é codificado, mas você pode torná-lo uma referência de célula :
Algoritmo
cq
epq
) na sua fórmula original.Eu estava pensando algo assim
O pequeno problema é que q é uma string e você precisa fazer uma comparação de strings com ela. A função mod produz zero se a moeda for quatro, caso contrário, o valor original da moeda, então você só precisa aumentá-lo em 1.
Eu sei que o OP encontrou uma solução, mas queria tentar com funções antigas disponíveis no Excel 2007.
Observe que o que você deseja segue um padrão. Sua produção esperada é sempre ano-1 e trimestre+1. A única exceção a isso é se o trimestre for 4, onde a produção esperada é sempre o mesmo ano, mas o 1º trimestre.
=IF(VALUE(RIGHT(A2;1))=4;LEFT(A2;4)&"-1";VALUE(LEFT(A2;4))-1&"-"&VALUE(RIGHT(A2;1))+1)
Aqui está uma maneira que você pode tentar:
Use uma tabela com todas as datas (coluna A). A vantagem de uma tabela é que a próxima fórmula se ajustará automaticamente se você adicionar linhas.
Na célula E2 apliquei:
=INDEX(Table1[Column1],XMATCH($D2,Table1[Column1])-3)
As células verdes são de entrada manual.
Na célula F2 apliquei:
=IF(AND($C2<=E2,$C2>=F2),$B2,0)