Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
752to756
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
752to756
752to756
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Performance...

Performance...
08.04.2006 00:16:56
windalf
Abend,...
ich habe mir eine kleine eigene Pivotauswertung gebastelt und wüsste gerne wie ich da Geschwindigkeit reinbekomme...
Es geht mir jetzt nicht darum schon öfter mal berechnete Werte irgendwie schlau vorzumerken sondern einfach nur den code bezüglich Durchlaufgeschindigkeit zu optiemieren.

Function Auswertung(ws_name As String, spalte As String, werk As String, Komponente As String) As Long
Dim sum As Long
Dim ws As Worksheet
Dim i As Long, j As Long, von_spalte As Long, bis_spalte As Long
Set ws = Worksheets(ws_name)
sum = 0
von_spalte = Left(spalte, 1)
bis_spalte = Right(spalte, 1)
j = 2
While ws.Cells(j, 1).Value <> ""
For i = von_spalte To bis_spalte
If werk = "" Or ws.Cells(j, 1).Value = werk Then
If Komponente = "" Or ws.Cells(j, 3).Value = Komponente Then
sum = sum + ws.Cells(j, i + 3).Value
End If
End If
Next i
j = j + 1
Wend
Auswertung = sum
End Function

Danke für Tips
Gruß Windi

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Performance...
08.04.2006 00:35:12
windalf
Das Screenupdating schalte ich sonst immer aus aber in meinem Falle geht das nicht weil ich die Funktion direkt in ein paar Zellen verwende... Bei mir läuft nen Makro durch das einen Zellwert ändert und dann werden die Zellen alle neu berechnet. Diagramme alle neu gemalt und dann in nenusw... Da hilft das screenupdating abschalten nicht wirklich....
AW: Performance...
08.04.2006 23:55:32
Yal
nicht nur ScreenUpdating sondern (und vor allem)
.Calculation = xlCalculationManual
Du sprichst von Pivot-Auswertung? Lässt Du diese Makro über eine Pivottabelle gehen? Könntest Du nicht direkt eine zweite Pivottabelle zum Zweck herstellen?
Yal
Anzeige
AW: Performance...
08.04.2006 01:22:05
Nepumuk
Hi,
schreib die Daten erst in ein Array und arbeite dieses ab. Das ist 100mal schneller.
Gruß
Nepumuk

AW: Performance...
08.04.2006 01:39:20
windalf
Wie genau meinst du das? Das Array bereits schon beim Öffnen und jedesmal beim Ändern einer Zelle der entsprechenden Sheets updaten oder "nur" am Anfang des Aufrufs der Funktion in ein array ballern?
AW: Performance...
08.04.2006 09:06:55
Nepumuk
Hi,
nur wenn es bnötigt wird. Das geht mit einer einzigen Anweisung. Da ich den Tabellenaufbau nicht kenne, ungetestet:
Function Auswertung(ws_name As String, spalte As String, _
        werk As String, Komponente As String) As Long

    Dim vntArray As Variant
    Dim lngColumn As Long, lngRow As Long
    With Worksheets(ws_name)
        vntArray = .Range(.Cells(2, Left$(spalte, 1)), .Cells _
            (.Cells(.Rows.Count, 1).End(xlUp).Row, Right$(spalte, 1) + 3)).Value
    End With
    For lngRow = 1 To UBound(vntArray)
        For lngColumn = Left$(spalte, 1) To Right$(spalte, 1)
            If werk = "" Or vntArray(lngRow, 1) = werk Then _
                If Komponente = "" Or vntArray(j, 3) = Komponente Then _
                Auswertung = Auswertung + vntArray(lngRow, lngColumn + 3)
        Next
    Next
End Function

Gruß
Nepumuk

Anzeige
AW: Performance...
10.04.2006 10:30:16
windalf
Besten Dank...
Am schnellsten ist es allerdings gewesen wenn ichs vor dem öffnen eingelsen habe. Läuft jetzt zu meiner Zufriedenheit. Vielen Dank...
AW: Performance...
09.04.2006 00:20:38
Yal
Setze ein Filter auf alle Spalten.
filtere die Spalte 1 mit "entspricht" <leer> "Und" "entspricht" <Werk-Werte>
dito Spalte 3 mit Komponente
markiere die gesuchte Spalten
Die Summe ist dann im Statuszeile unten rechts angezeigt.
Yal.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige