Supportnet / Forum / Tabellenkalkulation
Excel - VBA: Variable Zellbezüge
Frage
Hallo!
Habe ein Problem beim erstellen der Makros für eine Excel Tabelle!
Habe eine Tabelle mit Messwerten (2er Paare) insgesamt sind es 3 Messungen, also 3*2 Spalten, die 2er Spalten sind immer unterschiedlich lang.
Nun meine Frage: Ich soll die Spalten miteinander vergleichen und den Mittelwert bzw. die Streuung aufzeigen. Das will ich in 2 weiteren Spalten mit einem VBA-Makro machen.
Das VBA-Marko soll Beispielsweise in der Mittelwert Spalte ungefähr so aussehen(ich schreib jetzt einfach mal so ungefähr wie es aussehen sollte ohne wirkliche Programmiersprache):
start
Laufe Zellen durch von D4-Ende der Tabelle
für jede zelle
solange in Zelle A der gleichen Zeile eine Zahl ist
dann
solange in Zelle B der gleichen Zeile eine Zahl ist
dann
solange in Zelle C der gleichen Zeile eine Zahl ist
Mittelwert(A(gleiche zeile), B(gleiche Zeile), C(gleiche Zeile))
sonst
Mittelwert(A(gleiche zeile), B(gleiche Zeile)
sonst
Mittelwert(A(gleiche zeile))
ende
Hoffe jemand kapiert, wie ich es meine und kann mir weiterhelfen, habe bisher nirgends einen vergleiochbaren Quelltext gefunden, den man umschreiben könnte!
Danke,
Henrik
Antwort 1 von rainberg
Hallo Hendrik,
ein Zahlenbeispiel wäre hier wohl nützlicher als der verwirrende Text.
Gruss
Rainer
ein Zahlenbeispiel wäre hier wohl nützlicher als der verwirrende Text.
Gruss
Rainer
Antwort 2 von Saarbauer
Hallo,
versuch es mal hiermit
ist aber ungetestet
Gruß
Helmut
versuch es mal hiermit
Sub Mittelwert ()
letzteZeile = Range("D65536").End(xlUp).Row
For i = 4 To letzteZeile
j = 0
mw = 0
If IsNumeric(Range("A" & i).Value ) Then
j = j +1
mw = mw + Range("A" & i).Value
End If
If IsNumeric(Range("B" & i).Value ) Then
j = j +1
mw = mw + Range("B" & i).Value
End If
If IsNumeric(Range("C" & i).Value ) Then
j = j +1
mw = mw + Range("C" & i).Value
End If
mw = mw / j
Next i
End Sub
ist aber ungetestet
Gruß
Helmut
Antwort 3 von Saarbauer
Hallo,
eins vergessen
mw = mw / j
an dieser Stelle ist deine Zelle für den Mittelwert einzusetzen
Range("????" & i).Value = mw / j
etwa so
Gruß
Helmut
eins vergessen
mw = mw / j
an dieser Stelle ist deine Zelle für den Mittelwert einzusetzen
Range("????" & i).Value = mw / j
etwa so
Gruß
Helmut
Antwort 4 von rainberg
Hallo Henrik,
falls Deine Messwerte in den Spalten A bis C, beginnend in Zeile 4, stehen, schreibt Dir folgendes Makro die Mittelwerte der Zeilen in Spalte D.
Gruss
Rainer
falls Deine Messwerte in den Spalten A bis C, beginnend in Zeile 4, stehen, schreibt Dir folgendes Makro die Mittelwerte der Zeilen in Spalte D.
Option Explicit
Sub Mittelwert()
Dim intI As Integer
For intI = 4 To ActiveSheet.Range("A:C").Find("*", searchdirection:=xlPrevious).Row
Cells(intI, 4).Value = _
WorksheetFunction.Sum(Range("A" & intI & ":C" & intI)) / _
WorksheetFunction.Count(Range("A" & intI & ":C" & intI))
Next
End Sub
Gruss
Rainer
Antwort 5 von rainberg
Hallo Hendrik,
bei meinem Code hatte ich scheinbar Tomaten auf den Augen.
Ohne Umweg lautet er wie folgt:
Gruss
Rainer
bei meinem Code hatte ich scheinbar Tomaten auf den Augen.
Ohne Umweg lautet er wie folgt:
Option Explicit
Sub Mittelwert()
Dim intI As Integer
For intI = 4 To ActiveSheet.Range("A:C").Find("*", searchdirection:=xlPrevious).Row
Cells(intI, 4).Value = WorksheetFunction.Average(Range("A" & intI & ":C" & intI))
Next
End Sub
Gruss
Rainer