2010-08-28 17 views
0

J'ai une feuille de calcul contenant plusieurs lignes dupliquées. J'ai besoin que ces données soient triées dans l'ordre de leur fréquence, donc j'ai mis en place un COUNTIF et les ai triés. Maintenant, je voudrais supprimer les lignes en double, mais gardez la valeur COUNTIF à la même valeur et avoir Excel ajouter si d'autres doublons sont ajoutés à la feuille de calcul dans le futur.Conserver la valeur d'un objet COUNTIF après avoir supprimé les doublons (Excel 2007)

Comment puis-je faire cela?

EDIT:

Cela peut rendre un peu plus complexe, mais au-dessous est un exemple des données tel qu'il est aujourd'hui (le dernier chiffre indique le nombre de occurences, avec mon COUNTIF):

123 | Oui | 2,901 | 4,243 | 5555 | John | 4
123 | Oui | 2,919 | 4,528 | 5555 | John | 4
123 | Oui | 2,901 | 4,243 | 5555 | John | 4
123 | Oui | 4,243 | 4,128 | 5555 | John | 4
111 | 80 | 2,919 | 4,452 | 2222 | Joe | 2
111 | 80 | 11,00 | 2,901 | 2222 | Joe | 2

Et voilà comment je besoin d'être:

123 | Oui | 2,901 | 4,243 | 5555 | John | 4
111 | 80 | 2,919 | 4,452 | 2222 | Joe | 2

Notez que malgré certaines des valeurs qui ne correspondent pas exactement, les premières cellules (colonne A) sont les mêmes.

Espérons que cela soit un peu plus clair.

Répondre

1

Si quelqu'un est intéressé, voici la solution à mon problème.

Sub Count() 

Dim sID As String Dim sOldID As String Dim lLastRow As Long Dim lrow As Long Dim lCount As Long

lLastRow = ActiveSheet.Cells (Rows.Count, 1) .End (xlUp) .Row

lrow = 2 sid = ActiveSheet.Cells (lrow, 1) .Value sOldID = ActiveSheet.Cells (1, 1) .Value lCount = 1

Do While Len (sID) <> 0

If sID <> sOldID Then 
    ActiveSheet.Cells(lrow - 1, 19).Value = lcount 
    sOldID = sID 
    lcount = 1 
    lrow = lrow + 1 
Else 
    lcount = lcount + 1 
    ActiveSheet.Rows(lrow).Select 
    Selection.Delete Shift:=xlUp 
End If 

sID = ActiveSheet.Cells(lrow, 1).Value 

boucle

ActiveSheet.Cells (lrow - 1, 19) .Value = lCount

End Sub