Anzeige
Archiv - Navigation
1392to1396
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
Inhaltsverzeichnis

Application.WorksheetFunction.Sum für 2d Array

Application.WorksheetFunction.Sum für 2d Array
25.11.2014 09:16:59
Frank
Hallo an Alle,
ich habe schon gesucht und auch ein bisschen was gefunden, aber so richtig hilft mir das nicht weiter. Zur Zeit bilde ich die Summe der Spalte 5 meines Arrays indem ich es über eine Schleife aufaddiere. Nun dachte ich, dass man das auch mit der Sum Formel lösen könnte, aber so wie ich es im Code geschrieben habe geht das leider nicht. Hätte da jemand eine Idee?
For i = 1 To Anzahl
F = F + Daten(i, 5)
'Application.WorksheetFunction.Sum(Daten(1, 5): Daten(Anzahl, 5))
Next
Vielen Dank und viele Grüße
Frank

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

Betreff
Datum
Anwender
Anzeige
AW: Application.WorksheetFunction.Sum für 2d Array
25.11.2014 09:28:10
RPP63
Hallo!
Eine Möglichkeit:
Sub Summe()
Dim letzte As Long
With Tabelle1
letzte = .Cells(1, 5).End(xlDown).Row
MsgBox WorksheetFunction.Sum(.Range("E1:E" & letzte))
End With
End Sub

Gruß, Ralf

AW: Application.WorksheetFunction.Sum für 2d Array
25.11.2014 09:32:23
Frank
Hallo Ralf,
vielen Dank für deine schnelle Antwort bzw. dem Codebsp.
Besteht aber auch die Möglichkeit Excel Datenblätter außen vor zu lassen und das rein über VBA zu lösen?
Vielen Dank und viele Grüße
Frank

Rein über VBA?
25.11.2014 10:05:02
RPP63
Hi Frank!
Noch kann ich Dir nicht ganz folgen ...
Aber Du kannst natürlich ein Array per Code füllen und dann die Summe des Arrays ermitteln:
Sub aSumme()
Dim arrSumme
arrSumme = Array(1, 2, 3, 4, 5, 6, 7, 8, 9)
MsgBox WorksheetFunction.Sum(arrSumme)
End Sub

Gruß, Ralf

Anzeige
AW: Application.WorksheetFunction.Sum für 2d Array
25.11.2014 09:59:17
Rudi
Hallo,
eine einzelne Spalte oder Zeile kannst du per Index ansprechen.
F = WorksheetFunction.Sum(WorksheetFunction.Index(Daten, 0, 5))
Einen Vorteil erzielst du damit aber nicht. Im Gegenteil. Die Schleife ist schneller.
Außerdem funktioniert das nur bis zu 65536 Zeilen.
Gruß
Rudi

AW: Application.WorksheetFunction.Sum für 2d Array
25.11.2014 10:05:52
Frank
Hallo Rudi,
vielen Dank auch für deine Antwort. Dann liegt es nun dank deiner Zeilen klar auf der Hand, dass ich die Index Funktion nicht verwenden werde, da wie ich bereits bei Daniel geschrieben habe mein Array auch gut um die 500.000 Zeilen beinhaltet.
Auch dir einen schönen Tag und vielen Dank.
Frank

Anzeige
AW: Application.WorksheetFunction.Sum für 2d Array
25.11.2014 09:52:06
Daniel
Hi
geht im Prinzip so:
F = Worksheetfunction.Sum(Worksheetfunction.Index(Daten, 0, 5))
In VBA direkt gibt es keine Funktionen, um Arrays nach Zeilen oder Spalten auszuwerten.
Deshalb muss man, wenn man elegant sein und Schleifen vermeiden will, auf die Index-Funktion von Excel ausweichen (Worksheetfunction = Excelfunktion).
Da die Excelfunktionen aber für das Arbeiten mit Excelzellen geschrieben wurden und nicht direkt für Arrays, wird hierbei wahrscheinlich der ein- oder andere Konvertierungsprozess stattfinden, weshalb es durchauch sein kann, dass die Schleife bei grossen Datenmengen schneller ist und auch grössere Datenmengen verkraftet.
Beim Verarbeiten von Arrays ist VBA sehr schnell, weswegen man hier die Schleife nicht scheuen braucht.
(im Gegensatz zum Verarbeiten von Excelzellen, eine Schleife über einzelne Excelzellen sollte man möglichst vermeiden).
Gruß Daniel

Anzeige
AW: Application.WorksheetFunction.Sum für 2d Array
25.11.2014 10:03:03
Frank
Hallo Daniel,
vielen Dank für die ausführliche Erläuterung zu meinem Anliegen, welche sehr hilfreich und lehrreich für mich ist. Aufgrund deiner Zeilen werde ich meinen Code so belassen, da die Anzahl durchaus mal bei 500.000 liegen kann. Dein kleiner kurzer Code funktioniert dennoch Super. Vielen Dank an dieser Stelle.
Ich werde spaßeshalber mal die UDF 1000 mal aufrufen... Und schauen ob Index oder die bisherige Schleife schneller ist.
Vielen Dank und einen schönen Tag wünsche ich.
Frank

Das kommt ganz darauf an, was für ein Array ...
25.11.2014 20:08:37
Luc:-?
…das ist, denn ein Variant mit einem Array (Stichwort Arrays in Arrays) kann durchaus entweder nach einer bestimmten Spalte oder Zeile ausgewertet wdn.
Gruß, Luc :-?
Besser informiert mit …
Anzeige

187 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige