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 Réponses :
juste une hypothèse, je vois que c2totalrows = c2totalrows = application.counta (gamme ("A: A")) code>, qui est égal à 1, en raison de la plage "A: A". Ainsi, pour c2row = 2 à C2TotalRows code> Cette boucle ne fonctionnera jamais. Essayez de spécifier une autre plage de cellules. P>
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> 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
Essayez ceci modifié votre code: bonne chance et merci. p> Référence: Gamme.Find Methode (Excel) P> P>
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?