0 | UM | B | C | E | E | F | G |
---|---|---|---|---|---|---|---|
1 | Q1 | Q2 | 3º trimestre | 4º trimestre | Produto A | ||
2 | Produto A | 500 | 900 | 100 | |||
3 | Produto B | 600 | 400 | 500 | |||
4 | Produto C | 100 | 350 | 785 | 900 | ||
5 | Produto D | 230 | 600 | 210 | 690 | 100 | |
6 | Produto E | 310 | 900 | 480 | 125 | ||
7 |
Quero Range G3:G6
transpor os valores com base nos critérios de linha inseridos em Cell G1
.
(Observação: os produtos listados em Column A
são sempre exclusivos.)
Neste exemplo, o Row B2:E2
for Product A
é transposto e exibido em Range G3:G6
.
Até agora consegui desenvolver esta fórmula:
=LET(
a,TRANSPOSE(B2:E2),
IFERROR(INDEX(FILTER(a,a<>0),SEQUENCE(4,,1)),""))
Esta fórmula funciona.
No entanto, não tenho a mínima ideia de como tornar o Range B2:E2
nesta fórmula flexível para que ele mude com base na entrada em Cell G1
.
Você tem alguma ideia de como modificá-lo para que funcione?
Outra solução ( mais simples e com melhor desempenho ) pode ser:
Outra solução onde você passa todo o intervalo de dados para a
data
variável:Resultado:
Ou
=TOCOL(FILTER(B2:E6,A2:A6=G1),3)
se você tiver o Excel 365Outra opção usando
FILTER()
.Porque todo problema merece uma solução excessivamente complexa e elaborada:
Obrigado Michal, mas
XMATCH
ele está se sentindo excluído ;)Ou, cortesia do rotabor, (acomodando para futuras entradas com
start:XLOOKUP(TRUE, column <> "")
: