Você pode fazer isso com uma fórmula de matriz. Faça o seguinte:
- Configure sua tabela em uma nova planilha. Crie cabeçalhos de coluna
1
,2
,3
, etc. -
No cabeçalho
1
(emA2
), digite o seguinte.=IFERROR(INDEX(Sheet1!$A$1:$A$5,SMALL(IF(Sheet1!$B$1:$B$5=Sheet2!A$1,ROW(Sheet1!$B$1:$B$5)),ROWS(B$2:B2))),"")
onde
Sheet1
é a planilha com os dados originais,A1:A5
é a lista de nomes nos dados originais (incluindo o cabeçalho da coluna) eB1:B5
é a lista de números nos dados originais (incluindo o cabeçalho da coluna ). -
Após digitar a fórmula, coloque o cursor na barra de fórmulas e pressione Ctrl + Deslocar + Enter . Isto irá inserir a fórmula como uma fórmula de matriz. A fórmula aparecerá na barra de fórmulas cercada por chaves.
-
Agora preencha esta fórmula para todas as colunas da sua nova tabela. Em seguida, preencha a fórmula até onde for necessário para que todos os nomes apareçam.
Explicação da fórmula:
A parte SMALL(IF(Sheet1!$B$1:$B$5=Sheet2!A$1,ROW(Sheet1!$B$1:$B$5)),ROWS(B$2:B2))
da fórmula examina os dados originais dos registros que correspondem ao número especificado pelo cabeçalho da coluna. Se uma correspondência for encontrada, o número da linha de cada correspondência é retornado quando ela é preenchida.
A parte INDEX(Sheet1!$A$1:$A$5, ...)
da fórmula retorna o nome do número da linha encontrado.
A parte IFERROR(..., "")
verifica o que é retornado por INDEX
para um erro. Se um erro for encontrado, a fórmula não retornará nada.