Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1148to1152
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

Matrix spaltenweise auslesen

Matrix spaltenweise auslesen
Karsten
Hallo Excel Freunde,
eine 6 Spaltigen Tabelle wird über ein Macro mit Werten gefüllt, die Zeilenanzahl variiert. Nun möchte ich über VBA den Mittelwert und die Summe der jeweiligen Spalten A, B, C und F bilden. dabei möchte ich nach Möglichkeit keine Formel aus Excel Zelle= Mittelwert(A1:A20) verwenden. Ich hatte da eher an eine Matrix gedacht, die in Abhängigkeit von der Zeilenanzahl variiert. Ich habe bisher noch nicht mit einer Matrix gearbeitet, die max Zeilenanzahl ist 20. Habt Ihr dazu eine einfach Lösung parat? In der Literatur habe ich dazu leider nichts gefunden auch nicht in alten Beiträgen hier auf dem Forum.
Danke und noch nen schönen Tag
Karsten
Warum soll man dir noch antworten?,..
29.03.2010 11:25:04
Renee
wenn du dauernd neue Threads für die gleichen Fragen aufmachst, Karsten.
Mach einen Eintrag in deinen alten Threads und benutze die [x] Frage noch offen Checkbox!
Gib mal im Eingabefeld << Forumsliste deinen Namen ein.
GreetZ Renée
SUMME und MITTELWERT pro Spalte per VBA
29.03.2010 11:50:29
NoNet
Hallo Karsten,
hier eine Lösung - jedoch ohne MATRIX, sondern nur per VBA :
Sub SpaltenMitZahlenBefuellen()
Dim lngS As Long, lngZ As Long
'In Spalten A:F zufälig zw. 10 bis 20 Zahlen mit Wert 0 bis 100 ausgeben :
For lngS = 1 To 6
For lngZ = 1 To 10 + Int(Rnd() * 10) + 1
Cells(lngZ, lngS) = Int(Rnd() * 100)
Next
Next
End Sub

Sub SpaltenMittelwertUndSumme()
Dim lngS As Long, lngZ As Long
'Letzte belegte Zeilennummer ausgeben - kann auch weggelassen werden :
Range("A23:F23").FormulaR1C1 = "=LOOKUP(2,1/(R[-22]C:R[-3]C""""),ROW(R[-22]C:R[-3]C))"
For lngS = 1 To 6
lngZ = Cells(Rows.Count, lngS).End(xlUp).Row
'SUMME()-Funktion in Zeile 25 :
Cells(25, lngS).FormulaR1C1 = "=SUM(R[-24]C:R[-" & 25 - lngZ & "]C)"
'MITTELWERT()-Funktion in Zeile 26 :
Cells(26, lngS).FormulaR1C1 = "=AVERAGE(R[-25]C:R[-" & 26 - lngZ & "]C)"
Next
End Sub
Mit dem ersten Makro werden zufällig zw. 10 bis 20 Zahlen pro Spalte A:F erzeugt (für Dich nicht notwendig, da Du die Zahlen ja bereits hast).
Mit dem zweiten Makro wird in Zeile 23 per VERWEIS()-Funktion die letzte belegte Zeilennr. der Spalte angezeigt und in Zeile 25 diese Zahlen summiert und in Zeile 26 der MITTELWERT eingetragen.
Eigentlich ist es nicht notwendig, den exakten RANGE zu bestimmen, da SUMME und MITTELWERT die leeren Zellen ignorieren, bzw. diese keine Auswirkung auf das Ergebnis haben.
Man könnte also auch in allen Spalten fix bis Zeile 20 summieren und den Mittelwert bilden - aber das hast du in der Aufgabenstellung ja ausgeschlossen...
Gruß, NoNet
Anzeige
AW: SUMME und MITTELWERT pro Spalte per VBA
29.03.2010 12:22:04
Karsten
Hallo NoNet,
das ist aber wirklich ein große Hilfe die Du da leistest, vielen Dank das war sehr wichtig für meine Arbeit und spart mir ein Haufen act mit Excel Formeln. In der Vergangenheit war das in dem Forum leider nicht immer so. Gestern Abend hatte ich es schon mal probiert ohne wirklichen Erfolg. Endlich mal jemand der einem wirklich hilft!
Gruß aus Bremen!
Karsten
Hier tummeln sich zahlreiche ECHTE HELFER
29.03.2010 12:47:54
NoNet
Hallo Karsten,
freut mich, dass ich Dir helfen konnte und Dir den "Act" mit den Excel Formeln ersparen konnte !
In der Vergangenheit war das in dem Forum leider nicht immer so.
Gestern Abend hatte ich es schon mal probiert ohne wirklichen Erfolg. Endlich mal jemand der einem wirklich hilft!
Eigentlich ist es hier absolut üblich, dass man Hilfe bekommt, es tummeln sich auch zahlreiche andere Helfer mit tollen Lösungen hier im Herber-Forum.
Die Bereitschaft zur Hilfe und die Qualität der Antworten hängt jedoch von vielen Faktoren ab :
- von der Qualität der Aufgabenstellung und der Genauigkeit der gestellten Fragen
- von der Intensität (Schwierigkeit und Zeitaufwand) der Lösungserarbeitung
- von der antwortenden Person und deren Kenntnisstand
- vom Verhalten des Fragenden (Freundlichkeit, korrekter Aufbau des Frage-Beitrags mit Anrede und Verabschiedung)
- Von der Geduld des Fragenden (ständiges Nachfragen und "Jammern" oder sogar SCHREIEN, Neuer Thread zum gleichen Thema in kurzem Zeitabstand etc.) wird als intolerierbare Ungeduld angesehen)
- etc.
Es kann also sein, dass die Beantwortung einer Frage auch mal etwas länger dauert (zumal am WE nicht ganz so viele freiwillige Helferlein im Forum "unterwegs" sind). Als Fragender sollte man dennoch nicht die Geduld verlieren, sondern den potentiellen Helfern auch mal etwas Zeit lassen....
Ich hoffe, Du wirst zukünftig nur gute Erfahrungen hier im Forum sammeln, wie viele andere Besucher auch....Die Bereitschaft zur Hilfe und das fachliche wie meist auch das menschliche Niveau ist hier im Forum zumindest recht hoch.
Gruß, NoNet
Anzeige
Echte Helfer helfen; HelferInnen motzen! (owT)
29.03.2010 13:03:28
Renee

AW: Hier tummeln sich zahlreiche ECHTE HELFER
29.03.2010 15:43:11
Karsten
Hallo NoNet,
danke für Deine offenen Worte, ich werde das beherzigen. Ich hätte noch mal ne kleine Frage - Könntest Du das 2. Macro auch so hinbekommen, dass das Ergebnis nicht in Zeile 25 und 26 steht sondern in den ersten 2 Zeilen unter der Tabelle. Die Zeilennummern des letzten Spaltenwertes hattest Du ja bereits ausgelesen.
Ich habe das probiert - bekomme aber eine Fehlermeldung:
Cells(lngZ + 1, lngS).FormulaR1C1 = "=SUM(R[-lngZ]C:RC)".
Gruß Karsten
von einer Versucherin... ;-)
29.03.2010 15:52:23
einer
Hi Karsten,
Versuch mal:
Sub tiler()
Dim lngS As Long
Dim lngZ As Long
For lngS = 1 To 6
lngZ = Cells(Rows.Count, lngS).End(xlUp).Row
Cells(lngZ + 1, lngS).Formula = _
"=SUM(" & Range(Cells(1, lngS), _
Cells(lngZ, lngS)).Address(0, 0) & ")"
Cells(lngZ + 2, lngS).Formula = _
"=AVERAGE(" & Range(Cells(1, lngS), _
Cells(lngZ, lngS)).Address(0, 0) & ")"
Next
End Sub

GreetZ Renée
Anzeige
Ergebnisse 2 Zeilen unterhalb Werte
29.03.2010 15:58:19
NoNet
Hallo Karsten,
hier das gewünschte modifizierte Makro (ich habe noch eine Leerzeile zwischen den Werten und den Ergebnissen freigelassen !) :
Sub SpaltenMittelwertUndSumme()
Dim lngS As Long, lngZ As Long
'Letzte belegte Zeilennummer ausgeben - kann auch weggelassen werden :
'Range("A23:F23").FormulaR1C1 = "=LOOKUP(2,1/(R[-22]C:R[-3]C""""),ROW(R[-22]C:R[-3]C))"
For lngS = 1 To 6
lngZ = Cells(Rows.Count, lngS).End(xlUp).Row
'SUMME()-Funktion 2 Zeilen unterhalb  :
Cells(lngZ + 2, lngS).FormulaR1C1 = "=SUM(R1C:R[-2]C)"
'MITTELWERT()-Funktion 3 Zeilen unterhalb :
Cells(lngZ + 3, lngS).FormulaR1C1 = "=AVERAGE(R1C:R[-3]C)"
Next
End Sub
Wenn Du die Leerzeile nicht möchtest, dann ändere einfach die Parameter +2, -2, +3, -3 um jeweils 1 (also: +1, -1, +2, -2).
Gruß, NoNet
Anzeige
AW: Ergebnisse 2 Zeilen unterhalb Werte
29.03.2010 16:12:41
Karsten
Danke NoNet,
habe es mittlerweile auch mit diese Lösung hinbekommen.
Cells(lngZ + 1, lngS).FormulaR1C1 = "=SUM(R[-" & lngZ & "]C:R[-1]C)"
Er bildet hier zware ien Summe bis hoch zur Ersten zeile aber das stört mich nicht da oben keine Werte vorhanden sind.
Vielen Dank nochmal!!!
Gruß Karsten

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige