AW: Unterbrechung eines Makros
17.02.2006 09:35:17
georg
Hallo Chris,
danke für das Angebot. Ich habe hier ein kurzes Beispiel drin, das ich bereits auf eine SummeWenn geändert habe, da das schneller rechnet und ich die Matrix garnicht brauche.
https://www.herber.de/bbs/user/31129.xls
Logik der Datei: Tabelle 1 ist die Quelle (im Orginal ca. 6.000 Zeilen), wobei in Spalte U die gleiche Nummer mehrmals auftauchen kann (s. gelbe Markierung). Darum verdichte ich per Makro über den Spezialfilter "keine Duplikate" auf Tabelle 2 und ziehe die Werte aus Tabelle1 Spalte O per "SummeWenn" nach. Soweit so gut. Bei 6.000 Datensätzen braucht Excel einen Moment zur Berechnung. Das Makro geht gleich weiter und selektiert die Top10 aus Tabelle2. Eine MsgBox "Bitte warten" hilft hier leider auch nicht weiter, da Excel dann nicht rechnet.
Ich habe auch das Makro mal angehängt. Vielleicht fällt Dir ja was dazu ein.
Vielen Dank auf alle Fälle schon mal vorab!
Sub Makro5()
' soll Top 30 Proj selektieren:
' 1.Opp.Nr in neues Blatt kopieren, 2.dort auf einzelne Nrn filtern,
' 3.SummeWenn auf Vol.Unwghtd, 4.selektion der Top 30 in weiteres Blatt
Sheets.Add
Sheets("Tabelle1").Select
Columns("U:U").Select
Selection.Copy
Sheets("Tabelle2").Select
Range("A1").Select
ActiveSheet.Paste
Range("A2").Select
Range(Selection, Selection.End(xlDown)).Select
Application.CutCopyMode = False
Range("A2:A6000").AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Range( _
"C2"), Unique:=True
Range("D3").Select
Selection.FormulaArray = _
"=+SUM(IF(RC[-1]=Tabelle1!R3C21:R6000C21,Tabelle1!R3C15:R6000C15))"
Selection.NumberFormat = "#,##0"
Selection.AutoFill Destination:=Range("D3:D6000")
Range("C2:D2").Select
' hier muß Makro unterbrechen, da Berechnung der Formel noch nicht fertig ist
Selection.AutoFilter
Selection.AutoFilter Field:=2, Criteria1:="30", Operator:=xlTop10Items
Range("C2:D6000").Select
Selection.SpecialCells(xlCellTypeVisible).Select
Selection.Copy
Sheets("Tabelle2").Select
Sheets.Add
ActiveSheet.Paste
End Sub
Gruß
Georg