Reconhecer valores duplicados e adicioná-los automaticamente a uma extensão

1

Eu preciso de uma fórmula ou uma macro para o Excel fazer as próximas operações:
Identifique as duplicatas e deixe o primeiro valor como é por exemplo

2
2
2
2
2
2

Deve se tornar

2
2.1
2.2
2.3
2.4
2.5

Isso deve ser feito para todos os duplicados em uma coluna específica, neste caso, sendo a coluna B.

O que eu tentei até agora era usar uma fórmula como

=IF(COUNTIF($B$1:$B$5000,B1)>1,B1& " (" & COUNTIF(B$1:B1,B1) & ")",B1)

O que não funcionou e no caso de programar uma macro no VB não é realmente o meu pacote strong. A macro que testei também não está funcionando:

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim dataRng As Range
Dim dataArr() As Variant, output() As String
Dim y As Long, i As Long, j As Long, tmpcount As Long
Set dataRng = Range("B1").Resize(Me.UsedRange.Rows.Count, 1)
If Not Intersect(Target, dataRng) Is Nothing Then
    dataArr = dataRng.Value
    ReDim output(1 To UBound(dataArr, 1), 1 To 1)
   For y = 1 To UBound(dataArr, 1)
        If Right(dataArr(y, 1), 1) = ")" Then
            dataArr(y, 1) = Left(dataArr(y, 1), InStr(dataArr(y, 1), " (") - 1)
        End If
    Next y
    For i = 1 To UBound(dataArr, 1)
        tmpcount = 0
        output(i, 1) = dataArr(i, 1)
        For j = 1 To UBound(dataArr, 1)
            If dataArr(i, 1) = dataArr(j, 1) Then
                tmpcount = tmpcount + 1
                If j = i And tmpcount > 1 Then
                    output(i, 1) = dataArr(i, 1) & " (" & tmpcount & ")"
                    Exit For
                End If
                If j > i And tmpcount > 1 Then
                    output(i, 1) = dataArr(i, 1) & " (" & tmpcount - 1 & ")"
                    Exit For
                End If
            End If
        Next j
    Next i
    Call printoutput(output, dataRng)
    End If
End Sub
Private Sub printoutput(what As Variant, where As Range)
Application.EnableEvents = False
where.Value = what
Application.EnableEvents = True
End Sub

Alguém tem uma idéia do que deve ser feito aqui? Agradecemos antecipadamente por suas respostas.

    
por Daniel 08.03.2016 / 14:15

2 respostas

3

Com valores na coluna A , em B1 digite:

=A1

e em B2 digite:

=A2 & IF(COUNTIF($A$1:A1,A2)=0,"","." & COUNTIF($A$1:A1,A2))

e copie:

Observação : Não há necessidade de ter os valores na coluna A classificados.

    
por 08.03.2016 / 15:16
0

Tente dividir a resposta para ver a causa do erro (não consegui abrir o link de.tinypic.com/r/mja83/9 para ver o que está acontecendo). Por exemplo write = countif ($ A $ 1: A1, A2) em C2 tente usar fx ou insira Formula para usar o correspondente em seu idioma e talvez o separador de lista seja; não, nas configurações do seu computador. Também para = If (C2 = 0, "", ",") em D2 Então em B2 = A2 & D2 & C2 Se tudo estiver certo, combine as fórmulas novamente. Fórmula de Gary está certo e funciona

    
por 09.03.2016 / 14:01