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

zählen mit 2 kriterien

zählen mit 2 kriterien
09.05.2008 10:34:03
thol
Hallo,
ich hoffe jemand kann mir helfen, habe folgendes Problem.
Habe ein Workbook mit mehreren Sheets. In der Tabelle "Summary" kann ich mittels dropdown Liste ein Project auswählen. Der untenstehende Makro hilft mir einen guten Überblick zu haben, weill er in Tabelle "Risk Register", alle Risks sucht, die zum zuerst selektierten Projekt gehören und sie dann wieder in Tabelle Summary ab Zeile 18 kopiert (nicht die ganze Reihe sondern nur einige Kriterien).

Private Sub Worksheet_Change(ByVal Target As Range)
Dim DestSheet As Worksheet
Dim SourceSheet As Worksheet
Dim sRow As Long 'row index on source worksheet
Dim dRow As Long 'row index on destination worksheet
Dim sCount As Long
If Target.Cells.Address  "$E$4" Then Exit Sub
Set DestSheet = Worksheets("Summary")
Set SourceSheet = Worksheets("Risk Register")
sCount = 0
dRow = 17
With DestSheet
.Range("D18:H" & IIf(IsEmpty(.Cells(.Rows.Count, 4)), .Cells(.Rows.Count, 4).End(xlDown) _
_
.Row, .Rows.Count)).ClearContents
End With
With SourceSheet
For sRow = 1 To .Range("a65536").End(xlUp).Row
'use pattern matching to find project "Changing the world" anywhere in cell
If .Cells(sRow, "a") Like Target Then
sCount = sCount + 1
dRow = dRow + 1
'copy cols A,F,E & D
DestSheet.Cells(dRow, "d") = .Cells(sRow, "b")
DestSheet.Cells(dRow, "e") = .Cells(sRow, "f")
DestSheet.Cells(dRow, "f") = .Cells(sRow, "s")
DestSheet.Cells(dRow, "g") = .Cells(sRow, "j")
DestSheet.Cells(dRow, "h") = .Cells(sRow, "r")
'Range("Summary_Selected").ClearContents
End If
If .Cells(sRow, "a") Like Target Then
Next sRow
End With
Application.ScreenUpdating = False
End Sub


Bis hierher funktioniert alles prima. Nur haben diese Projektrisks auch Kategorien und ich muß eine Auswertung nach ihnen machen. D.h. in Tabelle Summary in den oberen Bereich (also genau zw. H4 und H13 habe ich die Kategorien, der Code sollte auf I4:I13 zählen, wieviele Risks es gibt, die A. zu einem bestimmten Projekt gehören (unter Target E:4) und B. die aber auch zur Kategorie in H4, dann H5, dann H6, etc. Kann man das machen? Kann der Code quasi nach diesen 2 Kriterien in Risk Register suchen und zählen?
Bin für eure Hilfe sehr dankbar!!!
Thol

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: zählen mit 2 kriterien
09.05.2008 14:39:19
fcs
Hallo Thol,
eine entsprechende Auswerteschleife kannst du in die vorhande Schleife zur Übernahme der Werte für das Projekt einbauen.
Siehe nachfolgender Vorschlag, den du noch ein wenig anpassen muss.
gruß
Franz

Private Sub Worksheet_Change(ByVal Target As Range)
Dim DestSheet As Worksheet
Dim SourceSheet As Worksheet
Dim sRow As Long 'row index on source worksheet
Dim dRow As Long 'row index on destination worksheet
Dim sCount As Long
Dim obJKriterien As Range, objZelleKriterium As Range
If Target.Cells.Address  "$E$4" Then Exit Sub
Set DestSheet = Worksheets("Summary")
Set SourceSheet = Worksheets("Risk Register")
'Bereich mit Kriterien
Set obJKriterien = DestSheet.Range("H4:H13")
'Spalte rechts von Kriterien auf 0 setzen
obJKriterien.Offset(0, 1) = 0
sCount = 0
dRow = 17
With DestSheet
.Range("D18:H" & IIf(IsEmpty(.Cells(.Rows.Count, 4)), _
.Cells(.Rows.Count, 4).End(xlDown).Row, .Rows.Count)).ClearContents
End With
With SourceSheet
For sRow = 1 To .Range("a65536").End(xlUp).Row
'use pattern matching to find project "Changing the world" anywhere in cell
If .Cells(sRow, "a") Like Target Then
sCount = sCount + 1
dRow = dRow + 1
'copy cols A,F,E & D
DestSheet.Cells(dRow, "d") = .Cells(sRow, "b")
DestSheet.Cells(dRow, "e") = .Cells(sRow, "f")
DestSheet.Cells(dRow, "f") = .Cells(sRow, "s")
DestSheet.Cells(dRow, "g") = .Cells(sRow, "j")
DestSheet.Cells(dRow, "h") = .Cells(sRow, "r")
'Range("Summary_Selected").ClearContents
'Kriterien auswerten
For Each objZelleKriterium In obJKriterien
'Hier spaltennummer für Kriterium anpassen!!
'falls Kriterien in mehreren Spalten dann für jede Spalte eine If-Anweisung
If objZelleKriterium = .Cells(sRow, 2) Then
objZelleKriterium.Offset(0, 1) = objZelleKriterium.Offset(0, 1) + 1
End If
Next
End If
Next sRow
End With
Application.ScreenUpdating = False
End Sub


Anzeige

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige