Contagem de células duplicadas (valores, texto e vazio) quando você compara duas colunas

1

Eu tenho duas planilhas com as seguintes estruturas de dados:

sheet a) Id   Name  abn  address    sheet b) Id  Name abn  address
         1    AA    123  ac                  25  ad   124  ab
         015  Ac    125  aw                  02  aa   123  ac
         26   3m         az                  8   aap  234  df
         32   im    98   op                  17  aj        aw
         230  aap   234  df                  15  3m   160  az

O que preciso encontrar são valores duplicados da planilha b contra a planilha a.

Já experimentei as funções countif , match , vlookup e index , mas ainda não estou feliz com o resultado. Precisa de posição porque a duplicata é repetida mais de 3 vezes, encontre a id de posição exata para essa duplicata. Como faço para encontrar valores duplicados de duas folhas diferentes?

    
por Nikola Karcev 06.09.2013 / 16:00

1 resposta

1

Parece que você está bem com algumas duplicatas, mas para mais de 3, você quer vê-las.

Eu montei um UDF chamado "xMatch" que pode te ajudar. É igual a Match, pois retorna a posição de um valor, mas permite que você especifique que deseja encontrar o valor nth (por exemplo, a terceira duplicata).

=xMatch("Look for", "Look in this column", "Find the nth one")

Para fazer isso funcionar, você precisará inserir esse código em um módulo (explico como abaixo se você não estiver familiarizado):

Public Function xMatch(lookup_value As String, column_array As Range, find_nth As Integer)'

Dim aSize As Integer 'Rows in the column_array
Dim Hit() As Long 'Array that keeps track of all match locations
Dim i As Long 'Iterator
Dim z As Long 'Counts zeroes
Dim Pos As Integer 'Position of our desired match in the column array

aSize = column_array.Rows.Count
ReDim Hit(1 To aSize)

'Check each cell in the range for matches
'When a match is found, note it's postion in the Hit array
'If a match isn't found, add another zero to the count
For i = 1 To aSize
 If (InStr(1, column_array(i), lookup_value) > 0) Then
  Hit(i) = 1 * i
 Else
  z = z + 1
 End If
Next i

'Small finds the kth smallest number, but considers ties as seperate numbers
'Consider {1,0,0,2}
'1st smallest number is 0, and the second smallest number is also 0
'So we need to screen out the all the zeros (z) and then find the nth item after that
Pos = WorksheetFunction.Small(Hit, z + find_nth)

xMatch = Pos

End Function

Para colocar este código, pressione Alt + F11 do seu arquivo do Excel e ele abrirá o VBA Editor. Na barra de ferramentas, selecione Inserir e selecione Módulo .

Abra o novo módulo e cole o código!

Agora, quando você digitar "= xMatch (" em uma célula, ele permitirá que você use sua nova fórmula.

Espero que isso ajude!

    
por 06.09.2013 / 19:03