Comecei a criar uma resposta com base no método da pergunta anterior. Então percebi que você estava no caminho certo. Como tudo está em ordem crescente, você pode basear a resposta nas contagens de cada dígito. A função REPT
irá construir uma string com base em quantas repetições de um caractere você precisa. A quantidade de cada dígito necessária para o restante é a quantidade no registro da Lista A menos a quantidade no registro da Lista B. Portanto, para uma única correspondência, digamos que os dígitos do registro A estão em A1: I1 e os dígitos do registro B estão em L1: P1. O restante seria:
=REPT(1,COUNTIF(A1:I1,1)-COUNTIF(L1:P1,1))&
REPT(2,COUNTIF(A1:I1,2)-COUNTIF(L1:P1,2))&
REPT(3,COUNTIF(A1:I1,3)-COUNTIF(L1:P1,3))&
REPT(4,COUNTIF(A1:I1,4)-COUNTIF(L1:P1,4))&
REPT(5,COUNTIF(A1:I1,5)-COUNTIF(L1:P1,5))&
REPT(6,COUNTIF(A1:I1,6)-COUNTIF(L1:P1,6))&
REPT(7,COUNTIF(A1:I1,7)-COUNTIF(L1:P1,7))&
REPT(8,COUNTIF(A1:I1,8)-COUNTIF(L1:P1,8))&
REPT(9,COUNTIF(A1:I1,9)-COUNTIF(L1:P1,9))
Tudo isso é uma fórmula. Eu dividi em linhas para que as peças se alinhassem e você pudesse ver o padrão. Se não houver correspondência, isso produzirá um erro, que pode ser tratado posteriormente.
Você deseja produzir um relatório dos resultados de todas as correspondências. Então, podemos configurar uma estrutura para fazer isso.
Digamos que a Lista A esteja em A1: I2000 e a Lista B em L1: P30. Crie uma tabela no R1: AV2002. A tabela será um mecanismo para coletar os resultados da comparação de todos os registros B para todos os registros A. Ele também fornecerá um índice para representar os números de linha em cada lista, para que você possa usar uma fórmula geral e um endereçamento indireto para realizar as correspondências. Configure a tabela para ficar assim:
[R] [S] [T] [U] ... [AV]
[1] <=======List B Row===============>
[2] List A Row 1 2 3 ... 30
[3] 1
[4] 2
[5] 3
...
Cada célula da tabela refletirá uma correspondência entre um registro B e um registro A. Na verdade, insira os números de linha da Lista A como rótulos na coluna R, começando na linha 3, e os números de linha da Lista B como títulos de coluna em S2: AV2. Esses números serão usados para apontar para os registros corretos.
Na fórmula fornecida anteriormente na resposta, os números de linha dos registros A e B são codificados. Para essa tabela, precisamos de uma fórmula geral que possa usar os rótulos de linha e coluna para se referir aos registros corretos a serem usados para cada célula. Por isso, substituímos os números das linhas por endereços indiretos com base nos rótulos. Cada referência a A1:I1
é substituída por:
INDIRECT("$A"&$R3):INDIRECT("$I"&$R3)
e cada referência a L1:P1
é substituída por:
INDIRECT("$L"&S$2):INDIRECT("$P"&S$2)
Observe os locais das $ âncoras nessas substituições. A célula S3 ficaria assim:
=REPT(1,COUNTIF(INDIRECT("$A"&$R3):INDIRECT("$I"&$R3),1)-COUNTIF(INDIRECT("$L"&S$2):INDIRECT("$P"&S$2),1))&
REPT(2,COUNTIF(INDIRECT("$A"&$R3):INDIRECT("$I"&$R3),2)-COUNTIF(INDIRECT("$L"&S$2):INDIRECT("$P"&S$2),2))&
REPT(3,COUNTIF(INDIRECT("$A"&$R3):INDIRECT("$I"&$R3),3)-COUNTIF(INDIRECT("$L"&S$2):INDIRECT("$P"&S$2),3))&
REPT(4,COUNTIF(INDIRECT("$A"&$R3):INDIRECT("$I"&$R3),4)-COUNTIF(INDIRECT("$L"&S$2):INDIRECT("$P"&S$2),4))&
REPT(5,COUNTIF(INDIRECT("$A"&$R3):INDIRECT("$I"&$R3),5)-COUNTIF(INDIRECT("$L"&S$2):INDIRECT("$P"&S$2),5))&
REPT(6,COUNTIF(INDIRECT("$A"&$R3):INDIRECT("$I"&$R3),6)-COUNTIF(INDIRECT("$L"&S$2):INDIRECT("$P"&S$2),6))&
REPT(7,COUNTIF(INDIRECT("$A"&$R3):INDIRECT("$I"&$R3),7)-COUNTIF(INDIRECT("$L"&S$2):INDIRECT("$P"&S$2),7))&
REPT(8,COUNTIF(INDIRECT("$A"&$R3):INDIRECT("$I"&$R3),8)-COUNTIF(INDIRECT("$L"&S$2):INDIRECT("$P"&S$2),8))&
REPT(9,COUNTIF(INDIRECT("$A"&$R3):INDIRECT("$I"&$R3),9)-COUNTIF(INDIRECT("$L"&S$2):INDIRECT("$P"&S$2),9))
Novamente, tudo isso é uma fórmula dividida em linhas para facilitar a leitura. Depois que o S3 estiver correto, copie essa fórmula para preencher todas as células da tabela. Você saberá se está correto com isto: as referências aos registros da Lista A serão idênticas para todas as células na mesma linha da tabela e o $R3
irá aumentar conforme você desce pela tabela (segunda linha da tabela, isso seja $R4
). Referências aos registros da Lista B serão idênticas à medida que você desce em uma coluna. O S$2
mudará a letra da coluna conforme você passa por uma linha da tabela (segunda coluna da tabela, isso será T$2
). Como verificação, T3 deve ficar assim:
=REPT(1,COUNTIF(INDIRECT("$A"&$R3):INDIRECT("$I"&$R3),1)-COUNTIF(INDIRECT("$L"&T$2):INDIRECT("$P"&T$2),1))&
REPT(2,COUNTIF(INDIRECT("$A"&$R3):INDIRECT("$I"&$R3),2)-COUNTIF(INDIRECT("$L"&T$2):INDIRECT("$P"&T$2),2))&
REPT(3,COUNTIF(INDIRECT("$A"&$R3):INDIRECT("$I"&$R3),3)-COUNTIF(INDIRECT("$L"&T$2):INDIRECT("$P"&T$2),3))&
REPT(4,COUNTIF(INDIRECT("$A"&$R3):INDIRECT("$I"&$R3),4)-COUNTIF(INDIRECT("$L"&T$2):INDIRECT("$P"&T$2),4))&
REPT(5,COUNTIF(INDIRECT("$A"&$R3):INDIRECT("$I"&$R3),5)-COUNTIF(INDIRECT("$L"&T$2):INDIRECT("$P"&T$2),5))&
REPT(6,COUNTIF(INDIRECT("$A"&$R3):INDIRECT("$I"&$R3),6)-COUNTIF(INDIRECT("$L"&T$2):INDIRECT("$P"&T$2),6))&
REPT(7,COUNTIF(INDIRECT("$A"&$R3):INDIRECT("$I"&$R3),7)-COUNTIF(INDIRECT("$L"&T$2):INDIRECT("$P"&T$2),7))&
REPT(8,COUNTIF(INDIRECT("$A"&$R3):INDIRECT("$I"&$R3),8)-COUNTIF(INDIRECT("$L"&T$2):INDIRECT("$P"&T$2),8))&
REPT(9,COUNTIF(INDIRECT("$A"&$R3):INDIRECT("$I"&$R3),9)-COUNTIF(INDIRECT("$L"&T$2):INDIRECT("$P"&T$2),9))
Cada célula da tabela refletirá a correspondência entre um registro B e um registro A. Ele conterá o "resto" ou um erro sem correspondência. Você deseja obter um resumo dos resultados de cada registro da Lista A. Cada linha da tabela representa um registro da Lista A. Os resultados podem ser resumidos no final da tabela (coluna AW) ou à direita dos dados da Lista A (coluna J). A fórmula para o primeiro resumo será:
=IF(ISERROR(S3),"",S3&" ")&IF(ISERROR(T3),"",T3&" ")&IF(ISERROR(U3),"",U3&" ")& ... &IF(ISERROR(AV3),"",AV3)
Em vez de mostrar todos os 30 termos aqui, isso mostra apenas os três primeiros e os últimos. Siga o mesmo padrão para adicionar o resto. Ele constrói a sequência de resultados concatenando os resultados de cada correspondência. Se houver um valor em uma célula, ele adicionará um espaço antes do próximo valor. Se você quiser um delimitador diferente, altere o espaço para outra coisa, como espaço de vírgula. Copie essa fórmula na coluna de resumo de todas as linhas da Lista A.