INDEX (, MATCH ()) retorna erro #VALUE em dados formatados como TABLE

0

Eu tenho dois conjuntos de dados (duas folhas na mesma pasta de trabalho) onde preciso localizar as entradas de uma na outra. Ambos os conjuntos são formatados como uma Tabela e estou usando uma combinação INDEX(MATCH()) para corresponder às entradas. Se uma correspondência for encontrada, os valores de um dos campos em Dataset1 deverão aparecer em uma coluna adicionada do Dataset2 . Dessa forma, sei que há uma correspondência, não me importo com o valor retornado.

Infelizmente, não tenho nenhum uniqueID para corresponder, por isso tenho de utilizar uma combinação de dois campos em cada uma das tabelas para tentar produzir correspondências. Os campos são [@Name] e [@Surname] , o que é menos que o ideal na língua croata, já que o nome Adis Terzic obviamente não corresponderá a Adis Terzić .

O problema

  • a coluna adicionada (campo) no conjunto de dados2 não mostra nenhum valor retornado do conjunto de dados1 , mas apenas mostra um erro #VALUE .

Alguma idéia do que estou fazendo errado?

Minha sintaxe está nas seguintes linhas:

=INDEX(Table1[@Field4],MATCH(Table1[@Name trim]&Table1[Surname trim], Table2[Name]&Table2[Last name], 0)) 

Veja um exemplo de pasta de trabalho (Google Drive).

  • O Dataset1 (Table1) tem cerca de 28000 linhas e 16 colunas;
  • O Dataset2 (Tabela 2) tem cerca de 24.000 linhas e 7 colunas;

Muito obrigado antecipadamente!

    
por Alex Starbuck 26.03.2018 / 13:11

2 respostas

1

Você pode considerar adicionar uma coluna auxiliar, em vez de fazer a fórmula combinar os campos. A fórmula é mais fácil de gerenciar e você pode comparar as diferenças de nome mais facilmente, como você mencionou acima.

Eu adicionaria uma coluna auxiliar para combinar seus nomes. Como você está usando uma tabela, ela pode ser simplesmente Coluna intitulada "NameLookup" = ([Fname] & "" & [Lname])

Então sua correspondência de índice seria parecida com

=IFERROR(INDEX(Table1[@Field4],MATCH(Table1[NameLookup],Table2[NameLookup],0),"Not Found")

Na verdade, tenho uma planilha semelhante na qual preciso comparar duas listas de nomes. Eu enfrento o desafio de lidar com iniciais intermediárias e sufixos (como jr, sr, III, etc). Sem mencionar os espaços extras ... Aqui está um resumo de como eu o separei com colunas auxiliares: Vejacomotudofunciona:"Check Full Name" é um COUNTIF que compara o nome completo à lista na segunda folha. Se encontrar uma correspondência, eu estou bem. "Nome, Meio, Sobrenome, Sem Sufixo" - todas são variações de uma fórmula TRIM para quebrar o nome.

Primeiro nome:   =LEFT([@NAME],SEARCH(" ",[@NAME]))

meio:   =IFERROR(MID([@NAME],SEARCH(" ",[@NAME],1)+1,SEARCH(" ",[@NAME],SEARCH(" ",[@NAME],1)+1)-SEARCH(" ",[@NAME],1)),"")

Sobrenome:   =IFERROR(RIGHT([NAME],LEN([NAME])-SEARCH(" ",[NAME],SEARCH(" ",[NAME],SEARCH(" ",[NAME])+1))),RIGHT([@NAME],LEN([@NAME])-FIND(" ",[@NAME],1)))

Não há sufixo:   =IFERROR(LEFT([@[Last Name]],FIND(" ",[@[Last Name]])-1),"")

O melhor palpite é uma coluna que eu uso para me ajudar a encontrar uma correspondência aproximada com o nome:

=IFERROR(IF([@[Check Full Name]]=0,INDEX(Marketing[NAME],MATCH([@DrillFirstNoSfx],Marketing[MarketFirstNoSfx],0)),""), "Not Found")

Eu uso a formatação condicional na célula NAME para determinar facilmente se há uma correspondência ou não. Texto em preto (Verificar nome completo > 0), Texto vermelho significa que não há correspondência alguma, Texto em amarelo significa que há uma correspondência aproximada (valor na coluna Melhor palpite).

Espero que isso ajude você a encontrar uma solução!

    
por 26.03.2018 / 17:09
0

InsiraessafórmulanaprimeiracéluladacolunaNew1daTabela2e,emseguida,preenchacomosbotõesdireitoeparabaixo.

=IFERROR(LOOKUP(2,1/(($A$28:$A$30=$J28)*($B$28:$B$30=$K28)),C$28:C$30),"No Match")

Ajuste o intervalo de dados conforme necessário.

    
por 26.03.2018 / 14:33