Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Häufigkeit von Werten ermitteln

Häufigkeit von Werten ermitteln
Werten
Hallo liebe Excelisten,
ich habe folgendes Problem und leider kein Idee:
Eine Tabelle die eine Spalte enthält, in der Werte stehen, die auch mehrfach vorkommen können.
z.B.
115,4
1234,8
115,4
12,6
12,6
Ich möchte per VBA ermitteln welcher Wert wie oft vorkommt.
z.B.
115,4 2
1234,8 1
12,6 2
Ich habe einfach keine Idee, wie ich anfange. Die obigen Werte habe ich schon mal in ein Array eingelesen,
da Leerzellen oder Werte ungleich Null nicht gezählt werden sollen.
Sub test()
Dim Zeile As Double
Dim arr(500) As Variant  'String  'Oder was auch immer der Inhalt wird
Dim arrZähler As Integer
On Error Resume Next
arrZähler = -1  'Ein Array fängt immer mit 0 als erstem Element an
With Worksheets("Januar 2012")
For Zeile = 6 To .Cells(Rows.Count, 23).End(xlDown).Row
If Cells(Zeile, 23) > 0 Then
arrZähler = arrZähler + 1
arr(arrZähler) = Cells(Zeile, 23).Value
End If
'   MsgBox arr(Zeile)
Next Zeile
End With
'Hier schreiben wir die Zellen irgendwoanders hin und werten die Inhalte aus.
For i = 0 To arrZähler
Cells(i + 500, 1) = arr(i)
Next
End Sub

Mit freundlichen Grüßen
Bernd
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
nicht von mir, aber so ?
20.03.2012 11:53:24
mir,

Public Sub NachZahlen()
Dim WkSh    As Worksheet
Dim aTemp   As Variant
Dim lZeile  As Long
Dim rZelle  As Range
Dim Dict_1  As Variant
Set WkSh = ThisWorkbook.Worksheets("Tabelle1")
WkSh.Range("B1:C" & WkSh.Cells(Rows.Count, 2).End(xlUp).Row).ClearContents
aTemp = WkSh.Range("A1").CurrentRegion
Set rZelle = WkSh.Cells(Rows.Count, 2).End(xlUp).Offset(0, 0)
Set Dict_1 = CreateObject("Scripting.Dictionary")
On Error Resume Next
For lZeile = 1 To UBound(aTemp)
Dict_1(aTemp(lZeile, 1)) = Dict_1(aTemp(lZeile, 1)) + 1
Next lZeile
'    ausgeben
rZelle.Resize(Dict_1.Count) = WorksheetFunction.Transpose(Dict_1.keys)
rZelle.Offset(0, 1).Resize(Dict_1.Count) = WorksheetFunction.Transpose(Dict_1.Items)
'    sortieren
WkSh.Range("B1:C" & WkSh.Cells(Rows.Count, 2).End(xlUp).Row).Sort _
Key1:=WkSh.Range("B1"), Order1:=xlAscending, _
Header:=xlNo, OrderCustom:=1, _
MatchCase:=False, Orientation:=xlTopToBottom
End Sub

Gruß
robert
Anzeige
AW: nicht von mir, aber so ?
20.03.2012 13:11:39
mir,
Das ist was ich wollte, ich muss es noch anpassen.
Vielen Dank Robert
AW: Häufigkeit von Werten ermitteln
20.03.2012 12:03:40
Werten
Hallo,
Sub test()
Dim Zeile As Long, objCounter As Object
Set objCounter = CreateObject("Scripting.Dictionary")
objCounter("Zahl") = "Anzahl"
With Worksheets("Januar 2012")
For Zeile = 6 To .Cells(Rows.Count, 23).End(xlDown).Row
If .Cells(Zeile, 23) > 0 Then
objCounter(.Cells(Zeile, 23).Value) = _
objCounter(.Cells(Zeile, 23).Value) + 1
End If
Next Zeile
End With
Cells(1, 1).Resize(objCounter.Count) = _
WorksheetFunction.Transpose(objCounter.keys)
Cells(1, 2).Resize(objCounter.Count) = _
WorksheetFunction.Transpose(objCounter.items)
End Sub

Gruß
Rudi
Anzeige
AW: Häufigkeit von Werten ermitteln
20.03.2012 13:14:22
Werten
Das sieht noch einfacher aus.
2 tolle Antworten in kurzer Zeit.
Dank auch an dich Rudi
Dieses Forum ist genial
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige