Hi
Ich muss nun zunehmend größere Exceltabellen auswerten und fange deshalb an das mit Makro's zu machen. Allerdings ergeben sich öfters Probleme, da ich in VBA nicht sonderlich bewandert bin.
Also mein Ziel ist folgendes:
Ich hab eine einfache, aber lange Tabelle, in der in Spalte1 "Kategorien" (strings) stehen und dazugehörig in Spalte2 eine Zahl. Ich brauche einmal eine Zählung, wieoft eine Kategorie vorhanden ist und weiterhin den MEDIAN aus den Werten (Spalte2), die zu der jeweiligen Kategorie gehören.
Die Tab. sieht vereinfacht so aus:
Spalte1 ; Spalte2
A ; 5
A ; 7
A ; 3
B ; 6
B ; 9
C ; 10
C ; 2
C ; 3
C ; 7
Ausgegeben soll folgendes:
Spalte1 ; Spalte2 ; Spalte3 (count) ; Spalte4(Median)
A ; 5
A ; 7
A ; 3 ; 3 ; 5
B ; 6
B ; 9 ; 2 ; 7.5
C ; 10
C ; 2
C ; 3
C ; 7 ; 4 ; 5
Da ich recht viele Kategorien habe, ist es recht aufwändig jede Kategorie einzeln abzufragen. Daher wollte ich das so lösen:
Aber da kommt gleich am Anfang ein "Run-time error '1004' Application-defined or object-defined error" in der Zeile "Set RngA = ActiveSheet.Range("A2", Range("A2").End(xlDown))"
Ob der Rest so funktionieren würde weiss ich auch nicht, weil ich mit dem Fehler nicht so richtig weiterkomme. Inhaltlich gesehn soll das Makro in Spalte1 immer die Zelle mit der darunterliegenden vergleichen und wenn die gleich sind eine Zeile runtergehen, zählen und das ganze nochmal bis die nächste Kategorie anfängt. Hier soll er dann die Anzahl (Zähler) ausspucken und vom Anfang der Kategorie (zeilenpos1) bis zum Ende (zeilenpos2) den Median aus den in Spalte2 stehenden Zahlen berechnen. Danach soll er dasselbe mit der nachfolgenden Kategorie machen.
Hat jemand eine Idee oder ein paar Tipps, das Problem zu lösen? Ich hab praktisch kaum Ahnung von VBA und komme inzwischen selbst nicht mehr weiter
Beste Grüße
Eckart
Ich muss nun zunehmend größere Exceltabellen auswerten und fange deshalb an das mit Makro's zu machen. Allerdings ergeben sich öfters Probleme, da ich in VBA nicht sonderlich bewandert bin.
Also mein Ziel ist folgendes:
Ich hab eine einfache, aber lange Tabelle, in der in Spalte1 "Kategorien" (strings) stehen und dazugehörig in Spalte2 eine Zahl. Ich brauche einmal eine Zählung, wieoft eine Kategorie vorhanden ist und weiterhin den MEDIAN aus den Werten (Spalte2), die zu der jeweiligen Kategorie gehören.
Die Tab. sieht vereinfacht so aus:
Spalte1 ; Spalte2
A ; 5
A ; 7
A ; 3
B ; 6
B ; 9
C ; 10
C ; 2
C ; 3
C ; 7
Ausgegeben soll folgendes:
Spalte1 ; Spalte2 ; Spalte3 (count) ; Spalte4(Median)
A ; 5
A ; 7
A ; 3 ; 3 ; 5
B ; 6
B ; 9 ; 2 ; 7.5
C ; 10
C ; 2
C ; 3
C ; 7 ; 4 ; 5
Da ich recht viele Kategorien habe, ist es recht aufwändig jede Kategorie einzeln abzufragen. Daher wollte ich das so lösen:
Code:
Sub Kategorien_zaehlen()
'
Dim RngA As Range
Dim zeilenpos1 As Integer
Dim zeilenpos2 As Integer
Set RngA = ActiveSheet.Range("A2", Range("A2").End(xlDown))
zeilenpos1 = 0
zeilenpos2 = 0
Do
zeilenpos1 = zeilenpos2 + 1
zeile = zeilenpos1
zaehlerA = 1
If Cells(zeile, A) = Cells(zeile + 1, A) Then
zaehlerA = zaehlerA + 1
zeile = zeile + 1
Else Cells(zeile, C).Value = zaehlerA
zeilenpos2 = zeilenpos2 + zaehlerA
Cells(zeile, D).FormulaR1C2 = "=MEDIAN(R[zeilenpos1]C2, R[zeilenpos2],C2)"
zeile = zeilenpos2
End If
Loop While zeilenpos2 < RngA
End Sub
Aber da kommt gleich am Anfang ein "Run-time error '1004' Application-defined or object-defined error" in der Zeile "Set RngA = ActiveSheet.Range("A2", Range("A2").End(xlDown))"
Ob der Rest so funktionieren würde weiss ich auch nicht, weil ich mit dem Fehler nicht so richtig weiterkomme. Inhaltlich gesehn soll das Makro in Spalte1 immer die Zelle mit der darunterliegenden vergleichen und wenn die gleich sind eine Zeile runtergehen, zählen und das ganze nochmal bis die nächste Kategorie anfängt. Hier soll er dann die Anzahl (Zähler) ausspucken und vom Anfang der Kategorie (zeilenpos1) bis zum Ende (zeilenpos2) den Median aus den in Spalte2 stehenden Zahlen berechnen. Danach soll er dasselbe mit der nachfolgenden Kategorie machen.
Hat jemand eine Idee oder ein paar Tipps, das Problem zu lösen? Ich hab praktisch kaum Ahnung von VBA und komme inzwischen selbst nicht mehr weiter
Beste Grüße
Eckart
Zuletzt bearbeitet: