Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1060to1064
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

Summe von Arrayzeile

Summe von Arrayzeile
20.03.2009 18:04:45
Arrayzeile
Hallo
Ich habe eigentlich zwei Fragen.
1. Wenn ich ein Array in vba habe, wie kann ich jeweils die Summe der Zeilen herausfinden, ohne den Weg über Excel machen zu müssen?
Ich wollte es so probieren, das funktionierte jedoch nicht (Matrix ist dabei ein Array):
Dim Vektor As String
Dim i As Integer
For i = 1 To 10
Vektor(i) = Application.WorksheetFunction.Sum(Matrix.Rows(i))
Next i
2. Um den Programmcode etwas übersichlich zu machen, wollte ich mehrere subs für einzelne Teile _
des Programms erstellen. Ich glaube jedoch, dass wenn ich in "

Sub test()" als Resultat eine Matrix M erhalte ich nicht einfach im nächsten 

Sub dieses M verwenden kann, ist das richtig? Gehen die Bezeichnungen nach "End Sub

" verloren?
Wie kann ich das besser lösen?
Alles in ein


Sub zu schmeissen wird auch mühsam, da insgesamt etwa 20 schleifen vorhanden sind und es eine   _
_
Fehlermeldung gibt bei Mehfachverwendung von Variablen.
Ich hoffe Ihr versteht meine Fragen ;-)
PS: Das ganze MUSS in VBA geschrieben sein.
Gruss
Helmi


		

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

Betreff
Datum
Anwender
Anzeige
AW: Summe von Arrayzeile
20.03.2009 18:24:00
Arrayzeile
Hallo Helmi,
deinen Array hast nicht vorgestellt. Die Begriffe werden hierzu etwas uneinheitlich genutzt.

Sub t()
Dim df(0 To 2, 0 To 1) As Long
Dim su As Long
df(0, 0) = 1
df(1, 0) = 2
df(2, 0) = 3
df(0, 1) = 10
df(1, 1) = 20
df(2, 1) = 30
su = Application.WorksheetFunction.Sum(df)
End Sub


Gruß Gerd

AW: Summe von Arrayzeile
20.03.2009 18:30:36
Arrayzeile
Hallo Gerd
Danke für deine Antwort. Das habe ich auch rausgefunden wie es funktioniert.
Als Resultat deines Besipieles erhalte ich 66.
Ich möchte (bei Deinem Besipiel) folgendes Resultat:
11
22
33
D.h. jeweils die Summe einer Zeile. Verstehst Du was ich meine?
Gruss
Helmi
Anzeige
AW: Summe von Arrayzeile
20.03.2009 20:37:31
Arrayzeile
Hallo Helmi!

Sub t2()
Dim df(0 To 2, 0 To 1) As Long
Dim su(0 To 2) As Long
Dim zeile As Long
Dim zähler As Long
df(0, 0) = 1
df(1, 0) = 2
df(2, 0) = 3
df(0, 1) = 10
df(1, 1) = 20
df(2, 1) = 30
For zeile = LBound(df, 1) To UBound(df, 1)
For zähler = LBound(df, 2) To UBound(df, 2)
su(zeile) = su(zeile) + df(zeile, zähler)
Next
Next
For zeile = LBound(su) To UBound(su)
MsgBox su(zeile)
Next
End Sub


Gruß Gerd

AW: Summe von Arrayzeile
20.03.2009 18:26:19
Arrayzeile
Hallo,
hier mal ein Beispiel um die Summe einzelner Spalten zu erhalten.
Sub Test()
Dim Wert1 As Double, Wert2 As Double, Wert3 As Double
Dim myAr(500, 2)
Dim A As Long

'Area für Demo befüllen 
For A = Lbound(myAr) To Ubound(myAr)
 myAr(A, 0) = A + 2
 myAr(A, 1) = A + 5
 myAr(A, 2) = A + 9
Next A

'Summe der Spalten ermitteln 
For A = Lbound(myAr) To Ubound(myAr)
 Wert1 = Wert1 + myAr(A, 0)
 Wert2 = Wert2 + myAr(A, 1)
 Wert3 = Wert3 + myAr(A, 2)
Next A

MsgBox "Summe Spalte 1: " & Wert1 & Chr(13) & _
        "Summe Spalte 2: " & Wert2 & Chr(13) & _
        "Summe Spalte 3: " & Wert3

End Sub


Gruß Tino

Anzeige
AW: Summe von Arrayzeile
20.03.2009 18:42:58
Arrayzeile
Danke Tino
Ich weiss nicht, ob mein Problem einfach zu lösen ist, da die Spaltenanzahl 70bis 100 sein wird und die Zeilenanzahl wird 30'000 sicher übersteigen.
Ich habe mich erst seit ein paar Tage mit vba beschäftigt und bin daher um jede Hilfe dankbar ;-)
Gruss
Helmi
AW: Summe von Arrayzeile
20.03.2009 18:50:47
Arrayzeile
Hallo,
Du brauchst doch nur die entsprechende Spalte einzusetzen von der Du die Summe haben möchtest.
Welche Spalte das ist, musst Du wissen.
Gruß Tino
AW: Summe von Arrayzeile
20.03.2009 19:14:04
Arrayzeile
Ich verstehe nicht ganz was Du meinst mit "entsprechende Spalte einsetzen".
Ich habe z.B. eine 30'000 x 90 Matrix, welche bereits als Array gegeben ist und möchte die Summe die 30'000 Zeilen bilden.
Mein Resultat soll danach ein 30'000 x 1 Vektor sein (Spaltenvektor).
Kann es sein, dass ich einfach noch eine zusätzliche Schlaufe einbauen muss, so dass ich nicht 3 (wie bei dir) sondern (for i=1 to 30000) 30000 Zeilen habe?
Gruss
Helmi
Anzeige
AW: Summe von Arrayzeile
20.03.2009 19:31:03
Arrayzeile
Hallo,
mit LBound und Ubound ermittelst Du die min und max Anzahl der Zeilen.
In der Schleife gibst Du nur als zweiten Parameter die Spalte an, von der Du die Werte haben möchtest.
Wie in meinem Beispiel zuvor habe ich die Spalte mit
0 für Spalte 1,
1 für Spalte 2
2 für Spalte 3
angegeben, wobei dies auf den Aufbau der Matrix ankommt mit welcher Spalte die 1. Spalte beginnt.
Bei mir ist es eben die 0.
For A = LBound(myAr) To UBound(myAr)
Wert1 = Wert1 + myAr(A, 0) '= Spalte 1
Wert2 = Wert2 + myAr(A, 1) '= Spalte 2
Wert3 = Wert3 + myAr(A, 2) '= Spalte 3
Next A
Bei Dir wäre es die Spalte 60 oder 70 oder sonst irgendeine Spalte.
Versuch Dir einfach nur vorzustellen,
die Matrix ist ein Zellbereich mit Zeilen und Spalten in dem Du mittels Schleife alle Zeilen durchgehst und den Wert aus einer bestimmten Spalte herausfischst.
Gruß Tino
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige