Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1252to1256
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

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

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

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige