Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
652to656
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
652to656
652to656
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

hilfe bei code

hilfe bei code
19.08.2005 10:15:50
jolina
hallo.
habe hier eine tabelle wo ich die anzahl bestimmter werte bestimmen möchte.
komme aber leider nicht weiter.
in der spalte 7 stehen die werte "a" bis "d". nun möchte ich die anzahl dieser einzelnen werte berechnen und die ergebnisse in der nächst freien zeile hintereinander stehen haben.
das problem ist jetzt, dass das makro sich nicht auf die kriterienwerte bezieht, sondern alle zeilen zählt inklusive der überschrift.
hilfe!
mein code bisher:

Function count()
counter = 0
counter = ActiveSheet.UsedRange.Columns(7).SpecialCells(xlCellTypeVisible).count - 1
count = counter
End Function


Sub zaehlen()
insertin = 0
For Each zelle In Columns(7).Cells
If IsEmpty(zelle) Then
insertin = zelle.Row
Exit For
End If
Next
zelle = 0
For Each zelle In ActiveSheet.UsedRange.Columns(7).SpecialCells(xlCellTypeVisible)
If zelle = "a" Then
Cells(insertin, 1).Value = count()
ElseIf zelle = "b" Then
Cells(insertin, 2).Value = count()
ElseIf zelle = "c" Then
Cells(insertin, 3).Value = count()
ElseIf zelle = "d" Then
Cells(insertin, 4).Value = count()
Else
End If
Next
End Sub

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: hilfe bei code
19.08.2005 10:43:30
Martina
Hallo,
ich versteh zwar deinen Code nicht wirklich aber probier mal das:

Sub zaehle()
Dim letztezeile As Long
Dim i As Byte
letztezeile = Cells(Rows.Count, 7).End(xlUp).Row
For i = 1 To 4
Cells(letztezeile + i, 7) = Chr(97 + i) & " = " & WorksheetFunction.CountIf(Columns(7), Chr(97 + i))
Next
End Sub

MfG
Martina
AW: hilfe bei code
19.08.2005 10:43:58
u_
Hallo,
viel zu kompliziert.

Sub zaehlen()
Cells(65536, 7).End(xlUp).Offset(1, -6) = WorksheetFunction.CountIf(Columns(7), "a")
Cells(65536, 7).End(xlUp).Offset(1, -5) = WorksheetFunction.CountIf(Columns(7), "b")
Cells(65536, 7).End(xlUp).Offset(1, -4) = WorksheetFunction.CountIf(Columns(7), "c")
Cells(65536, 7).End(xlUp).Offset(1, -3) = WorksheetFunction.CountIf(Columns(7), "d")
End Sub

Gruß
Geist ist geil!
Anzeige
AW: hilfe bei code
19.08.2005 14:01:28
Jolina
hallo..
@u_ dein vorschlage hat zwar in meiner beispieltabelle geklappt, aber wenn ich dies nun in meinen eigentlichen code übertrage bekomme ich die fehlermeldung: anwendungs- oder objektdefinierter fehler.
noch mal zu meinem problem:
hab eine tabelle, die so aussieht:
A..........................B..............E................I
Request-ID...UserID.....Country.....Priority
.........................................USA............2-medium
........................................Germany.........1-high
usw.
ich möchte die anzahl dieser werte nach bestimmten kriterien berechnen und in bestimmte zellen einer anderen tabelle einfügen.
bei dem kriterium priority(high, medium, low) hab ich das so gemacht, dass die werte nach den kriterien zunächst gefiltert und dann gezählt wurden. (siehe code unten)
da man jedoch diese methode nur bei wenigen kriterien verwenden kann, muss es irgendwie anders gelöst werden...aber ich weiß nicht wie.
bei country z.b. hab ich fast 50 länder (also 50 kriterien)
alle ergebnisse müssen außerdem in derselbe zeile in bestimmten zellen stehen...
hoffentlich kann mir jemand helfen :(
hier mein code:

Function count()
'Berechnet die Anzahl der angezeigten Zeilen
ActiveSheet.UsedRange.AutoFilter field:=1, Criteria1:="<>"
counter = 0
counter = ActiveSheet.UsedRange.Columns(1).SpecialCells(xlCellTypeVisible).count - 1
count = counter
End Function

‘Filtert werte nach den Kriterien high, medium, low

Sub filter_priority_high()
'Anzahl aller Tickets nach priority high
If ActiveSheet.AutoFilterMode Then ActiveSheet.UsedRange.AutoFilter
ActiveSheet.UsedRange.AutoFilter field:=9, Criteria1:="1*"
End Sub


Sub filter_priority_medium()
'Anzahl aller Tickets nach priority medium
If ActiveSheet.AutoFilterMode Then ActiveSheet.UsedRange.AutoFilter
ActiveSheet.UsedRange.AutoFilter field:=9, Criteria1:="2*"
End Sub


Sub filter_priority_low()
'Anzahl aller Tickets nach priority low
If ActiveSheet.AutoFilterMode Then ActiveSheet.UsedRange.AutoFilter
ActiveSheet.UsedRange.AutoFilter field:=9, Criteria1:="3*"
End Sub

‘vorgeschlagener Befehl

Sub zaehlen()
Cells(65536, 5).End(xlUp).Offset(1, -6) = WorksheetFunction.CountIf(Columns(5), "USA")
End Sub


Sub MakroTest01()
Application.ScreenUpdating = False
If ActiveSheet.AutoFilterMode Then ActiveSheet.UsedRange.AutoFilter
WBname = ActiveWorkbook.Name
‘hier werden die Berechnungen ausgeführt
Call filter_priority_high
high = count()
Call filter_priority_medium
medium = count()
Call filter_priority_low
low = count()
Call zaehlen
If ActiveSheet.AutoFilterMode Then ActiveSheet.UsedRange.AutoFilter
Application.ScreenUpdating = True
Application.Workbooks("Zieldatei.xls").Worksheets("Tabelle1").Activate
‘hier wird nach der nächsten freien Zelle in der Spalte 2 gesucht, weil in dieser Zeile alle Ergebnisse erscheinen sollen
insertin = 0
For Each zelle In Columns(2).Cells
If IsEmpty(zelle) Then
insertin = zelle.Row
Exit For
End If
Next
‘hier wird bestimmt welches Ergebnis in welche Zelle kommt
Cells(insertin, 1).Value = MonthName(Month(Date - Day(Date)), True) & " " & (Year(Date - Day(Date)))
Cells(insertin, 129).Value = high
Cells(insertin, 131).Value = medium
Cells(insertin, 133).Value = low
Application.Workbooks(WBname).Close
End Sub

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige