2016-09-14 20 views
0

Ich habe Probleme, diesen Code an meine Situation anzupassen. Ich möchte eine Funktion erstellen, die es mir ermöglicht, die Anzahl der Duplikate in einer Spalte zu zählen (ich glaube, dass es derzeit nur für Zeilen zählt). Vielen Dank!Anpassen dieses VBA-Codes zum Zählen von Duplikaten in Spalten

Function CountPairs(rng As Variant) As Integer 
Dim v As Variant 
Dim count, length, i As Integer 
Dim found As Boolean 
count = 0 
found = False 
v = rng 
length = UBound(v, 2) 

For i = 1 To length 

' Count if second of pair 

If Not (IsEmpty(v(1, i))) Then 
If found Then 
    count = count + 1 
    found = False 
Else 
    found = True 
End If 
Else 
found = False 
End If 

Next i 

CountPairs = count 

End Function 
+0

Dies zählt keine Duplikate, zählt aber grundsätzlich die Anzahl der nicht leeren Zellen und gibt die Hälfte zurück. Zum Beispiel würde das Array {1,2,3,4,5,6} 3 zurückgeben, wo es 0 zurückgeben sollte, wenn es nach Duplikaten suchen würde. –

+0

@ScottCraner - die aktuelle Funktion liefert 2 für das Array {1,2,, 3,, 4,5,6}, aber 3 für {1,2,, 3,4,, 5,6} und 0 für {1,, 2,, 3,, 4,, 5,, 6}. Es zählt also die Anzahl, wie oft zwei aufeinanderfolgende nicht leere Zellen existieren. (Aber ** zählt definitiv keine Duplikate!) – YowE3K

+0

Danke euch allen, ich habe all eure Ratschläge benutzt und die Dinge scheinen jetzt zu funktionieren :) – VBNoob1991

Antwort

0

Warum gehst du nicht kopieren Sie den Bereich, den Sie möchten, die Duplikate zu einem neuen Blatt zu zählen, es umzusetzen und dann gelten die RemoveDuplicates Funktion - die Anzahl der Duplikate dann Selection.Rows.Count - (WorksheetFunction.CountA (Selection)/Selection.Columns.Count))

+0

@ScottCraner Ich könnte mich geirrt haben, aber ich denke du liegst falsch - Es ' d Zählen Sie die Anzahl der entfernten Zeilen (dh die Anzahl der Duplikate. Wenn Sie die obige Lösung einbeziehen, erhalten Sie die Anzahl der eindeutigen Werte, aber Sie haben recht, wenn Sie sagen, dass es weniger Arbeit ist. Vielleicht etwas wie CountA ("A1: A10")). SUMMENPRODUKT (1/COUNTIF (A1: A10, A1: A10)) ' – Jeremy

+1

Ah Entschuldigung, dass Sie richtig sind Ich habe nicht nah genug geschaut –

+0

Die Formel in Ihren Kommentaren übergibt einen # Div0 Fehler, wenn Leerzeichen im Bereich sind Gibt eine 0 zurück, wenn es in den leeren Raum kommt. Ansonsten funktioniert es großartig. –

0

Das wäre folgende Matrixformel wird Duplikate zählen:

=SUM(IF(COUNTIF(A1:A13,A1:A13)=2,1/COUNTIF(A1:A13,A1:A13))) 

als eine Matrixformel muss mit bestätigt werden Ctrl-Shift-Enter statt Eingabe, wenn Bearbeitungsmodus zu verlassen. Wenn es richtig gemacht wird, wird Excel {} um die Formel setzen.

enter image description here

Wenn Sie mehrfach, dreifach zählen mögen und so weiter als 1 dann:

=SUM(IF(COUNTIF(A1:A13,A1:A13)>1,1/COUNTIF(A1:A13,A1:A13))) 

Wenn Sie nur die einzigartigen nicht leeren Zellen zählen wollen, dann:

=SUM(IF(A1:A13<>"",1/COUNTIF(A1:A13,A1:A13))) 
Verwandte Themen