Macro para verificar e colocar o valor exclusivo em uma célula do intervalo da coluna

1

Sou muito novo em macros.

Eu queria converter a seguinte fórmula em macro

=IF(COUNTIF($B$1:$B1,$A2)=1,"NA",$A2)

Onde no $ B1 será incremental e eu estarei imprimindo o valor em $ B2.

O resultado final deve ser semelhante abaixo

    
por Sundhar 09.09.2016 / 12:45

1 resposta

1

É só que você não quer duplicatas? Use um dicionário de script.

Dim dict as Object
set dict = CreateObject("Scripting.Dictionary")
Dim i as Long
For i = 2 to 9
   dict(cells(i,1)) = 1
Next
Dim dictKey as Variant
i = 1
For Each dictKey in dict.Keys()
   cells(i,2) = dictKey
   i = i+1
Next

Ou no final:

dim dictVal as string
For i = 2 to 9
  dictVal = cells(i,1)
  If Dict(dictVal).Exists Then
    cells(i,2) = cells(i,1)
  Else: cells(i,2) = "N/A"
  End if
Next

Ou se você quiser que o caminho bruto faça isso

Sub testing()
    Dim i As Long
    Dim j As Long
    Dim c As Range
    For i = 2 To 9
        With Range(Cells(i + 1, 1), Cells(9, 1))
            Set c = .Find(Cells(i, 1), LookIn:=xlValues)
                If c Is Nothing Then
                    Cells(i, 2) = Cells(i, 1)
                Else: Cells(i, 2) = "N/A"
                End If
        End With
    Next
End Sub
    
por 09.09.2016 / 12:52