Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Teilbereich eines Arrays summieren

Forumthread: Teilbereich eines Arrays summieren

Teilbereich eines Arrays summieren
gothino
Hi,
Gibt's einen direkten Weg (ohne Schleife) einen Teilbereich eines (zweidimensionalen) Zahlenarrays zu summieren?
Ich müsste z.Bsp. die Zeilen eines eines Arrays von der ersten Spalte bis zu einer Spalte n summieren
Den kompletten Array zu summieren funktioniert ja mit
sum = application.sum(array)
Eine Methode einen Teil eines Arrays direkt (also wieder ohne Schleife) in einen passenden (Vektor)Array zu kopieren würde mir also auch helfen
Danke und lg
gothino
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
TeilArray summieren - Workaround...
27.08.2009 13:34:32
NoNet
Hallo Gothino,
direkt im ARRAY kann man das wohl nicht lösen, aber per "Workaround" (wenn das ARRAY nicht mehr Einträge enthält als Excelzeilen zur Verfügung stehen), indem man das ARRAY in ein temp. Tabellenblatt kopiert und dort summiert.
Hier ein Beispiel : Es wird das 3. bis 6. Element eines EINDIMENSIONALEN Arrays summiert :
Sub TeilArraySummieren1()
Dim ar(10), intt As Integer
For intt = 0 To 10
ar(intt) = intt
Next
'MsgBox Application.Sum(ar)
Sheets.Add.[A1].Resize(UBound(ar)) = Application.Transpose(ar)
MsgBox Application.Sum([A1].Offset(3).Resize(4)) 'summiert 3.-6. Array-Element
Application.DisplayAlerts = False
ActiveSheet.Delete
Application.DisplayAlerts = True
End Sub
Jetzt schau ich mal, ob das auch für ein 2-Dimensionales ARRAY klappt (mehr Dimensionen sind mit dieser Methode leider nicht möglich ;-)
Gruß, NoNet
Anzeige
AW: TeilArray summieren - Workaround...
27.08.2009 15:02:35
gothino
Danke für den Tipp
glaubst du dass das schneller ist als eine Schleife im Array?
Mir geht's nämlich hauptsächlich um die Geschwindigkeit
Ich weiß auch nicht ob ich nicht irgendwo mehr Zeilen brauche als das Tabellenblatt hat
lg
gothino
Spalte / Zeile aus 2-dim. Array auslösen
27.08.2009 13:59:14
{Boris}
Hi,
du kannst sowohl eine ganze Zeile / Spalte herauslösen. Im folgenden Beispiel Spalte 1.
Option Explicit
Sub test()
Dim arrZweidimensional, arrEindimensional
arrZweidimensional = Range("A1:D7")
With WorksheetFunction
arrEindimensional = .Index(arrZweidimensional, 0, 1)
MsgBox .Sum(arrEindimensional)
End With
End Sub
Ansonsten ist doch eine Schleife innerhalb eines Arrays mega schnell?!
Grüße Boris
Anzeige
AW: Spalte / Zeile aus 2-dim. Array auslösen
27.08.2009 14:57:46
gothino
Danke,
das ist als erster Schritt mal schon sehr hilfreich. Im speziellen müsste ich aber nicht die ganze Zeile sondern nur einen bestimmten Teil der Zeile summieren. Hast du da auch eine Idee?
Ich arbeite mit zig-tausend Datensätzen und da summieren sich diese Schleifen zeitmäßig ordentlich
lg
gothino
Anzeige
AW: Spalte / Zeile aus 2-dim. Array auslösen
27.08.2009 18:22:14
{Boris}
Hi,
imho kann man das nicht anders als mit Schleifen lösen. Vielleicht isses ja dennoch fixer, wenn man nur noch ein eindimensionales Array bearbeitet.
Grüße Boris
;
Anzeige
Anzeige

Infobox / Tutorial

Teilbereich eines Arrays in Excel summieren


Schritt-für-Schritt-Anleitung

Um einen Teilbereich eines zweidimensionalen Arrays in Excel zu summieren, kannst du die folgenden Schritte ausführen. Diese Anleitung bezieht sich auf VBA (Visual Basic for Applications), das in Excel integriert ist.

  1. Öffne den VBA-Editor: Drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Erstelle ein neues Modul: Klicke mit der rechten Maustaste auf VBAProject (Deine Arbeitsmappe) > Einfügen > Modul.
  3. Füge den Code ein:
    Sub TeilArraySummieren()
       Dim arrZweidimensional As Variant
       arrZweidimensional = Range("A1:D7") ' Beispielbereich
       Dim sum As Double
       sum = Application.Sum(Application.Index(arrZweidimensional, 0, 1)) ' Summiert die erste Spalte
       MsgBox "Summe: " & sum
    End Sub
  4. Passe den Bereich an: Ändere Range("A1:D7") nach Bedarf, um deinen spezifischen Datenbereich zu reflektieren.
  5. Führe das Makro aus: Drücke F5, um das Makro auszuführen und die Summe anzuzeigen.

Häufige Fehler und Lösungen

Fehler 1: "Typen unverträglich"

  • Lösung: Stelle sicher, dass der Bereich, den du summierst, Zahlen enthält. Strings oder leere Zellen können diesen Fehler verursachen.

Fehler 2: "Index außerhalb des Bereichs"

  • Lösung: Überprüfe, ob der angegebene Bereich tatsächlich existiert und die korrekten Dimensionen hat.

Alternative Methoden

Wenn die obige Methode nicht für dich funktioniert oder wenn du eine andere Herangehensweise bevorzugst, kannst du auch den folgenden "Workaround" verwenden, um einen Teilbereich eines Arrays zu summieren:

  1. Array in eine temporäre Tabelle kopieren:
    Sheets.Add.[A1].Resize(UBound(arrZweidimensional, 1), UBound(arrZweidimensional, 2)) = arrZweidimensional
  2. Summiere den gewünschten Teilbereich:
    MsgBox Application.Sum([A1].Offset(3).Resize(4, 1)) ' Summiert die Zeilen 4 bis 7 in der ersten Spalte
  3. Lösche das temporäre Blatt, wenn nicht mehr benötigt.

Praktische Beispiele

Hier sind einige Beispiele, wie du spezifische Teilbereiche summieren kannst:

  • Summiere die ersten 4 Zeilen einer bestimmten Spalte:

    MsgBox Application.Sum(Application.Index(arrZweidimensional, 1, 1).Resize(4, 1))
  • Summiere die Zeilen 2 bis 5 einer bestimmten Zeile:

    MsgBox Application.Sum(Application.Index(arrZweidimensional, 2, 1).Resize(4, 1))

Diese Methoden sind besonders nützlich, wenn du mit großen arrays arbeitest und die Geschwindigkeit optimieren möchtest.


Tipps für Profis

  • Verwende Application.Index: Diese Methode ist schneller als Schleifen, wenn du nur einen Teil eines Arrays summieren musst.
  • Vermeide unnötige Berechnungen: Wenn du nur einen Teilbereich summieren möchtest, beschränke die Daten auf das Nötigste, um die Leistung zu steigern.
  • Teste den Code mit kleinen Arrays, bevor du ihn mit großen Datenmengen anwendest, um unerwartete Fehler zu vermeiden.

FAQ: Häufige Fragen

1. Wie kann ich mehrere Spalten gleichzeitig summieren? Du kannst eine Schleife verwenden, um die Summe jeder Spalte zu berechnen oder die Application.Sum-Funktion auf einen Bereich anwenden.

2. Gibt es eine Möglichkeit, die Summe ohne VBA zu berechnen? Ja, du kannst die SUMME-Funktion in Excel verwenden, indem du einen Bereich definierst, z.B. =SUMME(A1:D7).

3. Was ist der Vorteil von Arrays in VBA? Arrays bieten eine effiziente Möglichkeit, große Datenmengen zu verarbeiten, da sie eine schnellere Zugriffsgeschwindigkeit im Vergleich zu direkt in Excel gespeicherten Daten bieten.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige