PROCX – Retornar Várias Colunas
Este tutorial vai demonstrar como retornar várias colunas usando o PROCX no Excel. Se sua versão do Excel não for compatível com o PROCX, leia como retornar várias colunas usando o PROCV.
Retornando Colunas Consecutivas com PROCX
Uma vantagem da função PROCX é que ela pode retornar várias colunas consecutivas de uma só vez. Para fazer isso, insira o intervalo de colunas consecutivas na matriz de retorno e ele retornará todas as colunas.
=PROCX(F3;B3:B7;C3:D7)
Observe que aqui nossa matriz de retorno tem duas colunas (C e D) e, portanto, duas colunas são retornadas.
PROCX-FILTRO Retornando Colunas Não Adjacentes
Embora a função PROCX possa retornar várias colunas consecutivas, ela não pode retornar colunas não adjacentes. Para retornar colunas não adjacentes, podemos usar a função FILTRO.
=PROCX(F3;C3:C7;FILTRO(B3:D7;{1\0\1}))
Vamos examinar a fórmula:
Função FILTRO
A função FILTRO é comumente usada para filtrar linhas, mas também pode ser usada para filtrar colunas. Para fazer isso, inserimos uma matriz horizontal de 1s (VERDADEIRO) e 0s (FALSO) com o mesmo número de colunas da matriz de entrada (1o argumento). As colunas que correspondem a 0s são filtradas, enquanto as colunas que correspondem a 1s são retornadas.
=FILTRO(B3:D7;{1\0\1})
Função PROCX
A saída da função FILTRO é então usada como a matriz de retorno do nosso PROCX.
=PROCX(F3;C3:C7;H3:I7)
A combinação de todas as funções resulta em nossa fórmula original:
=PROCX(F3;C3:C7;FILTRO(B3:D7;{1\0\1}))
PROCX-FILTRO-CONT.SE Retornando Colunas Não Adjacentes
Em vez de selecionar manualmente as colunas a serem filtradas, podemos usar a função CONT.SE para determinar automaticamente as colunas que serão retornadas e filtradas.
=PROCX(F3;C3:C7;FILTRO(B3:D7;CONT.SE(G2:H2;B2:D2)))
Vamos examinar a fórmula:
Função CONT.SE
Primeiro, vamos usar a função CONT.SE para contar a instância de cada cabeçalho de origem (por exemplo, B2:D2) dos cabeçalhos de saída (por exemplo, M2:N2).
=CONT.SE(N2:O2;B2:D2)
Função FILTRO
O resultado da matriz da função CONT.SE é então usado como condição para filtrar as colunas.
=FILTRO(B3:D7;H3:J3)
Função PROCX
Por fim, podemos usar o resultado da função FILTRO na função PROCX para retornar as colunas que desejamos.
=PROCX(F3;C3:C7;K3:L7)
A combinação de todas as funções resulta em nossa fórmula original:
=PROCX(F3;C3:C7;FILTRO(B3:D7;CONT.SE(G2:H2;B2:D2)))
PROCX-ESCOLHER Retornando as Colunas em uma Ordem Diferente
A fórmula PROCX-FILTRO-CONT.SE pode retornar colunas não adjacentes, mas, e se quisermos retornar qualquer coluna em uma ordem diferente? Para resolver isso, vamos usar a função ESCOLHER.
=PROCX(F3;B3:B7;ESCOLHER({2\1};C3:C7;D3:D7))
Vamos examinar a fórmula:
Função ESCOLHER
Primeiro, usamos a função ESCOLHER para unir colunas em uma ordem específica em uma matriz.
=ESCOLHER({2\1};C3:C7;D3:D7)
Observação: Inserimos as colunas que queremos separadamente na função ESCOLHER (por exemplo, C3:C7, D3:D7) e as ordenamos usando o núm_índice (1o argumento).
Função PROCX
A matriz resultante da função ESCOLHER é usada como a matriz de retorno.
=PROCX(F3;B3:B7;H3:I7)
A combinação de todas as funções resulta em nossa fórmula original:
=PROCX(F3;B3:B7;ESCOLHER({2\1};C3:C7;D3:D7))
PROCX-ESCOLHERCOLS Retornando as Colunas em uma Ordem Diferente
A fórmula PROCX-ESCOLHER torna-se longa e tediosa se tivermos muitas colunas para retornar. Felizmente, há uma nova função de matriz (atualmente na versão BETA do Excel 365) que é mais conveniente do que a função ESCOLHER – a função ESCOLHERCOLS.
=PROCX(F3;B3:B7;ESCOLHERCOLS(B3:D7;3;2))
Vamos examinar a fórmula:
Função ESCOLHERCOLS
Diferentemente da função ESCOLHER, em que unimos as colunas em uma ordem especificada, a função ESCOLHERCOLS retorna as colunas que selecionamos na ordem que especificamos.
=ESCOLHERCOLS(B3:D7;3;2)
Observação: Os números que especificamos nos argumentos col_num (a partir do 2o argumento) são os números relativos das colunas da matriz fornecida (por exemplo, B3:D7).
Função PROCX
Por fim, podemos usar a função PROCX com o resultado da função ESCOLHERCOLS.
=PROCX(F3;B3:B7;H3:I7)
A combinação de todas as funções resulta em nossa fórmula original:
=PROCX(F3;B3:B7;ESCOLHERCOLS(B3:D7;3;2))
PROCX-ESCOLHERCOLS-CORRESP Retornando Colunas em Ordem Diferente
Em vez de selecionar manualmente as colunas e sua ordem, podemos usar a função CORRESP para determinar automaticamente as colunas e sua ordem que são exigidas pela tarefa.
=PROCX(F3;B3:B7;ESCOLHERCOLS(B3:D7;CORRESP(G2:H2;B2:D2;0)))
Vamos examinar a fórmula:
Função CORRESP
Primeiro, usamos a função CORRESP para determinar as posições relativas das colunas de cada cabeçalho de saída a partir dos cabeçalhos de origem.
=CORRESP(L2:M2;B2:D2;0)
Função ESCOLHERCOLS
Agora que temos as posições das colunas selecionadas, podemos usar a função ESCOLHERCOLS para retornar as colunas selecionadas em uma matriz.
=ESCOLHERCOLS(B3:D7;H3:I3)
Função PROCX
A última etapa é alimentar o resultado da função ESCOLHERCOLS com a matriz de retorno da função PROCX.
=PROCX(F3;B3:B7;J3:K7)
A combinação de todas as funções resulta em nossa fórmula original:
=PROCX(F3;B3:B7;ESCOLHERCOLS(B3:D7;CORRESP(G2:H2;B2:D2;0)))