2017-08-29 2 views
0

Ich bin auf der Suche nach einer Formel, um Vorkommen von Werten nur aufzulisten, wenn sie größer als 2 mal sind; und das Ergebnis würde wie im Bild gezeigt werden.Zählen mehrerer Vorkommen

Zum Beispiel, wenn ein Wert 2 mal wiederholt wird, wird dies mit "2" und 3 mal mit "3" angezeigt. Wenn sich also zwei Zahlen im Bereich wiederholen, wird dies wie im Bild unten mit "32" angezeigt. (Es ist kein Komma zwischen den Nummern erforderlich). Vielen Dank.

enter image description here

+0

Ich kann Ihnen das Muster mit Formeln, '22122111',' 33322111' und '44411411' holen. Aber ich denke, du wirst vba brauchen, um die Antwort zu bekommen, die du suchst. –

+0

Meine erste Wahl wäre eine Formel, wenn möglich. aber mir geht es auch mit einer vba-lösung. – Max

+0

Wenn die Anzahl der Male, die eine Zahl wiederholen kann, behoben ist, können Sie dort eine superlange Formel erhalten. –

Antwort

2

Hier ist ein einfaches UDF:

Function mycount(rng As Range) As String 

Dim str As String 
Dim rngcnt As Range 
For Each rngcnt In rng 
    If InStr("," & str & ",", "," & rngcnt.Value & ",") = 0 Then 
     If Application.WorksheetFunction.CountIf(rng, rngcnt) > 1 Then 
      mycount = mycount & Application.WorksheetFunction.CountIf(rng, rngcnt) 
      str = str & "," & rngcnt 
     End If 
    End If 
Next rngcnt 
End Function 

So Ihr Anruf auf dem Blatt wäre:

=mycount(A2:H2) 

abschreiben Dann.

enter image description here

+0

Scott, das funktioniert super. Vielen Dank. Wenn ich einen Buchstaben am Ende der Zählung hinzufügen möchte, sagen Sie "r", um es wie 22r, 32r, 4r usw. aussehen zu lassen, was soll ich zum vba hinzufügen? Ich kann mit Formeln spielen, aber nicht viel mit VBA. – Max

+0

Sie können es in den Code einfügen oder einfach '= mycount (A2: H2) &" r "' als Formel @ Max verwenden. Als Hinweis: Bitte beim nächsten Mal diese Anforderung in den ursprünglichen Post stellen. Bitte denken Sie daran, als richtig zu markieren. –

+0

ja, es tut mir leid, ich habe eine Formel erwartet, ich habe es mit VBA vergessen. Vielen Dank. – Max

2

So wie ich es bekam eine VBA function.This Funktion ein Wörterbuch ist die Definition verwendet, so ist es th Bezugnahme auf in den 'Microsoft Scripting Runtime' (schauen here) notwendig ist. Außerdem habe ich eine Funktion zu sortieren die Zeichen in Zeichenfolge von here

Function Repetitions(rng As Range) 

    Dim dict As New Scripting.Dictionary 
    Dim res() As Integer 

    For aux = 1 To rng.Count 
     Dim numero As Integer 
     numero = rng.Cells(1, aux).Value 
     If Not dict.Exists(numero) Then 
      dict.Add numero, 1 
     Else 
      dict(numero) = dict(numero) + 1 
     End If 
    Next aux 

    Dim result As String 
    result = "" 
    For aux = 0 To UBound(dict.Items) 
     If dict.Items(aux) > 1 Then result = result & dict.Items(aux) 
    Next aux 

    While Len(result) 
     iTemp = 1 
     Temp = Left(result, 1) 

      For I = 2 To Len(result) 
      If StrComp(Mid(result, I, 1), Temp, vbTextCompare) = 0 Then 
       If StrComp(Mid(result, I, 1), Temp, vbBinaryCompare) = 1 Then 
        Temp = Mid(result, I, 1) 
        iTemp = I 
       End If 
      End If 

      If StrComp(Mid(result, I, 1), Temp, vbTextCompare) = 1 Then 
        Temp = Mid(result, I, 1) 
        iTemp = I 
       End If 
      Next I 

     Repetitions = Repetitions & Temp 
     result = Left(result, iTemp - 1) & _ 
          Mid(result, iTemp + 1) 
    Wend 


End Function 

Schließlich verwendet, können Sie die Funktion als Formel in Excel verwenden, ist es wie folgt zum Beispiel Aufruf:

=Repetitions(A2:F2)