
Fórmula genérica
=XLOOKUP(neworder,oldorder,XLOOKUP(val,lookup,results))
Resumo
XLOOKUP pode ser usado para reordenar colunas, aninhando um XLOOKUP dentro de outro. No exemplo mostrado, a fórmula em G9 é:
=XLOOKUP(G8:J8,B4:E4,XLOOKUP(G5,E5:E15,B5:E15))
O que retorna uma correspondência com o valor em G5, com todos os 4 campos em uma sequência diferente.
Explicação
Esta fórmula usa XLOOKUP duas vezes, aninhando um XLOOKUP dentro de outro. O primeiro XLOOKUP (interno) é usado para realizar uma pesquisa de correspondência exata no valor em G5:
XLOOKUP(G5,E5:E15,B5:E15)
- O lookup_value vem da célula G5
- O lookup_array é E5: E15 (códigos)
- O return_array é B5: E15 (todos os campos)
- O match_mode não é fornecido e o padrão é 1 (correspondência exata)
- O search_mode não é fornecido e o padrão é 1 (do primeiro ao último)
O resultado é uma correspondência em "AX-160", retornado como uma matriz de todos os quatro campos na ordem original:
(160,130,60,"AX-160")
Esse resultado é entregue diretamente ao segundo XLOOKUP (externo) como o argumento da matriz de retorno. O valor de pesquisa é fornecido como um intervalo que representa a nova ordem de campos, e a matriz de pesquisa é o intervalo que contém a ordem de nome de campo original.
=XLOOKUP(G8:J8,B4:E4,(160,130,60,"AX-160"))
- O lookup_value é o intervalo G8: J8 (nova ordem de campo)
- O lookup_array é o intervalo B4: E4 (ordem de campo antiga)
- O return_array é o resultado do primeiro XLOOKUP
Esta é a parte complicada. Estamos passando vários valores de pesquisa, então XLOOKUP internamente calculará várias posições de correspondência. Para cada valor no novo intervalo de ordem de campo, XLOOKUP encontrará uma posição dentro do antigo intervalo de ordem de campo e usará essa posição para buscar um valor da matriz de retorno (os valores retornados pela primeira função XLOOKUP). O resultado é o resultado da pesquisa original com campos organizados na nova ordem.