online 1
gast (50)

/ Forum / Tabellenkalkulation

TabellenkalkulationTabellenkalkulation

Fragevon henne87 vom 15.04.2020, 11:39 Options

Excel - VBA: Variable Zellbezüge

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 schreiben

Antwort 1 von rainberg vom 15.04.2020, 15:08 Options

Hallo Hendrik,

ein Zahlenbeispiel wäre hier wohl nützlicher als der verwirrende Text.

Gruss
Rainer

Antwort 2 von Saarbauer vom 16.04.2020, 09:50 Options

Hallo,

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 vom 16.04.2020, 09:55 Options

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

Antwort 4 von rainberg vom 16.04.2020, 10:49 Options

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.

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 vom 16.04.2020, 18:31 Options

Hallo Hendrik,

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

Ähnliche Themen

Schrittweite der Zellbezüge bestimmen
pa647  29.05.2007 - 103 Hits - 3 Antworten

VBA: Variabelen und Zellbezüge
Trudi  04.07.2007 - 92 Hits - 4 Antworten

Excel VBA Textbox drucken
BossD  05.07.2007 - 77 Hits - 2 Antworten

Schnellreferenz Excel VBA
Joshuan  23.05.2008 - 219 Hits - 3 Antworten

VBA-Excel
mentosbasi  28.05.2008 - 349 Hits - 3 Antworten

Hinweis

Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

Neue Einträge

Version: supportware 1.9.150 / 10.06.2022, Startzeit:Thu Jan 8 21:07:44 2026