0
votes

Comparer la valeur des cellules d'une colonne dans VBA

J'ai des données dans une colonne comme suit:

8856
8867
8876
8856
8898
P>

Mon objectif est de comparer chaque cellule de la colonne et si les valeurs sont les mêmes pour exécuter une instruction IF. P>

Private Sub CommandButton2_Click()

Dim sht1 As Worksheet
Dim sht2 As Worksheet
Dim C1row As Long
Dim C2row As Long
Dim C2TotalRows As Long
Dim CustID As String

Set sht1 = Worksheets("Report")

sht1.Activate
C2TotalRows = Application.CountA(Range("A:A"))
C1row = 2

Do While sht1.Cells(C1row, 3).Value <> ""

    CustID = sht1.Cells(C1row, 3).Value

    For C2row = 2 To C2TotalRows

        If CustID = Cells(C2row, 3).Value Then
            MsgBox CustID
            Exit For
        End If

    Next
    C1row = C1row + 1

Loop
End Sub


3 commentaires

Quel est un problème exactement, ce qui ne fonctionne pas?


J'ai des données comme suit 8856 8867 8876 8856 8898 et je souhaite comparer les données les unes avec les autres si elles sont identiques, puis exécutez une boucle si


Que comptez-vous faire avec le duplicata?


3 Réponses :


0
votes

juste une hypothèse, je vois que c2totalrows = c2totalrows = application.counta (gamme ("A: A")) , qui est égal à 1, en raison de la plage "A: A". Ainsi, pour c2row = 2 à C2TotalRows Cette boucle ne fonctionnera jamais. Essayez de spécifier une autre plage de cellules.


0 commentaires

0
votes

Il semble que vous voudriez savoir à quelle fréquence une pute (comme 8856) survient dans les données et à quel numéro de ligne. J'ai créé un simple classe CINFO pour cela, puis je mets les informations ensemble dans un Dictionnaire . À la fin, je viens d'imprimer les informations, mais vous pouvez ajouter le code que vous souhaitez exécuter

voici la classe cinfo p> xxx pré>

et c'est le code pour collecter les informations P>

Sub UniqueValues()
Dim dict As Scripting.Dictionary
Dim rg As Range, sngCell As Range
Dim i As Long
Dim lRow As Long
Dim cellInfo As cInfo

    lRow = Range("A1").End(xlDown).Row      'Assumption now free rows and at least on entry in row 2
    Set rg = Range("A2:A" & lRow)
    Set dict = New Dictionary

    For Each sngCell In rg
        If dict.Exists(sngCell.Value) Then
            dict.Item(sngCell.Value).ocur = dict.Item(sngCell.Value).ocur + 1
            dict.Item(sngCell.Value).rowNr = dict.Item(sngCell.Value).rowNr & ";" & CStr(sngCell.Row)
        Else
            Set cellInfo = New cInfo
            cellInfo.rowNr = CStr(sngCell.Row)
            cellInfo.ocur = 1
            dict.Add sngCell.Value, cellInfo
        End If
    Next

    ' Do sth here. I will print some info
    For i = 0 To dict.Count - 1
        Debug.Print "CustID:", dict.Keys(i), dict.Items(i).ocur, "occurence(s) in rows", dict.Items(i).rowNr
    Next

End Sub


0 commentaires

0
votes

Essayez ceci modifié votre code: xxx

bonne chance et merci.

Référence: Gamme.Find Methode (Excel)


0 commentaires