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

MittelwertsformelBereich per VBA in Zelle schreibn

MittelwertsformelBereich per VBA in Zelle schreibn
TommiH
Hallo,
gibt es eine einfache Methode wie man in eine Zelle eine Formel schreiben kann?
Ich möchte in der Zelle y,z nicht den Mittelwert von y-10 - y-1 hineinschreiben, sondern die Formel dafür.
Cells(y, z).FormulaLocal = "=MITTELWERT(B10:B19)"
funktioniert ja für y=20 und z=2
Nur, wenn ich das für beliebige y/z-Kombinationen machen möchte, gibt es da einen (einfachen) Trick, oder muss ich da immer mit Schleifen hantieren und etwas in der Form
"=MITTELWERT(Range(Cells(y-10, z), Cells(y-1, z)))" basteln? Wobei das nicht funktioniert.
Tommi
AW: MittelwertsformelBereich per VBA in Zelle schreibn
16.05.2011 15:23:11
Rudi
Hallo,
gibt es eine einfache Methode wie man in eine Zelle eine Formel schreiben kann?

Ja, gibt es:
Cells(y, z).FormulaR1C1 = "=Average(R[-1]C:R[-10]C)"
Gruß
Rudi
AW: MittelwertsformelBereich per VBA in Zelle schreibn
16.05.2011 15:34:04
TommiH
Hallo Rudi,
oh, ich denke das ist es (vom Prinzip), aber die Rs und Cs sind fixe Buchstaben? Erkennt Excel das selber, das ich mich damit auf Rows und Columns beziehe und die -1 / -10 sind relative Beziehungen?
Ich habe nun allerdings in der Zwischenzeit den Bereich per Schleife bestimmt (es ist leider nicht immer 10 davor :( )
Aber mit
v3 = "=MITTELWERT(Cells(" & h & "," & x & "),Cells(" & y - 1 & "," & x & "))"
kommt auch nur eine Fehlermeldung.
h = Startwert in y-Richtung,
y-1= Endwert in y-Richtung
x = Spalte
Müsste das nicht auch funktionieren?
Tommi
Anzeige
AW: MittelwertsformelBereich per VBA in Zelle schreibn
16.05.2011 16:03:03
Rudi
Hallo,
oh, ich denke das ist es (vom Prinzip), aber die Rs und Cs sind fixe Buchstaben? Erkennt Excel das selber, das ich mich damit auf Rows und Columns beziehe und die -1 / -10 sind relative Beziehungen?

Richtig erkannt.
"=MITTELWERT(Cells(" & h & "," & x & "),Cells(" & y - 1 & "," & x & "))"

Ganz Falsch
.FormulaLocal="=Mittelwert(" &Range(cells(h,x), cells(y-1,x)).Address & ")"
Gruß
Rudi
AW: MittelwertsformelBereich per VBA in Zelle schreibn
16.05.2011 17:13:37
TommiH
Hallo Rudi,
also das funktioniert bestens, auch wenn ich die Adressierung nicht so ganz verstehe, das Range(c1,c2)-Konstrukt ist mir zwar klar, aber wieso man nun plötzlich da ein .Adress dahinter hängen muss verstehe ich nicht ganz. Egal - es geht.
Nun hat sich nur noch ein Folgeproblem aufgetan, und zwar habe ich noch 2 weitere Möglichkeiten, wo die zu verwendenden Zellen nicht in einer Range zusammen liegen, also MW von Zelle (a,x) UND Zelle (b,x) UND Zelle (c,x) UND Zelle (d,x). Also MW von 4 Zellen die in der selben Spalte liegen. Die Werte a,b,c,d sind mir bekannt.
Wandelt sich dann der Ausdruck irgendwie in einer Art
"=Mittelwert(" & Cells(a,x);Cells(b,x);Cells(c,x);Cells(d,x).Adress & ")"
Tommi
Anzeige
AW: MittelwertsformelBereich per VBA in Zelle schreibn
16.05.2011 17:18:53
TommiH
Oh, ich habe vergessen zu schreiben, das ich die Werte in einem Array habe. Es gibt ds1 Werte und durch(1,1) ist der erste durch(2,1) der zweite und durch(ds1,1) der letzte Wert.
Also besteht die Problematik, das der Ausdruck in einer Schleife generierbar sein sollte. Geht das?
Tommi
AW: MittelwertsformelBereich per VBA in Zelle schreibn
16.05.2011 22:37:38
Rudi
Hallo,
verstehe zwar nur Bahnhof, behaupte aber, dass es geht.
Gruß
Rudi
AW: MittelwertsformelBereich per VBA in Zelle schreibn
17.05.2011 08:57:02
TommiH
Hallo Rudi,
okay, dann nochmal anders. Mit deinem Code kann ich einen Bereich (C5:C15) (z.B.) angeben, ich brauche die Möglichkeit die Zellen C5 C9 C12 und C15 zu definieren, also bestimmte Zellen. Von den Zellen weiss ich die Spalte (definiert durch Variable x) und die Zeile (definiert durch Werte in einem Array durch(1 to 10) - durch(1) ist der erste Zeilen-Wert, durch(2) der zweite usw.)
War das verständlicher ausgedrückt?
Tommi
Anzeige
AW: MittelwertsformelBereich per VBA in Zelle schreibn
17.05.2011 11:29:46
Rudi
Hallo,
Schema:
Dim myRange as Range
Dim i as integer
....
Set myRange=Cells(durch(1), x)
For i=2 To UBound(durch)
Set myRange=Union(myRange, Cells(durch(i), x))
Next i
Activecell.Formula="=Average(" &myRange.Address & ")"
Gruß
Rudi
AW: MittelwertsformelBereich per VBA in Zelle schreibn
17.05.2011 12:40:32
TommiH
Hallo Rudi,
oha, so sieht es also 'professionell' aus :) - DANKE !
Ich bin heute früh dann noch zu folgender Lösung gekommen
wobei
x die Spalte ist, um die es geht)
dv1 = Anzahl Werte im Array + 1
durch() = Array für Zeileninfo
v4 = Chr(64 + x) & durch(1)
For h = 2 To dv1 - 1
v4 = v4 & ";" & Chr(64 + x) & durch(h)
Next h
Cells(y, x).FormulaLocal = "=Mittelwert(" & v4 & ")"
Funktioniert zumindest auch
Tommi
Anzeige
Chr(64 + x)
17.05.2011 12:48:26
Rudi
Hallo,
was machst bei Spalten >Z?
Gruß
Rudi
AW: Chr(64 + x)
17.05.2011 12:58:32
TommiH
Hallo Rudi,
der Datenbereich kann nur maximal 22-24 Spalten enthalten, mehr kann das Ursprungsprogramm, welches die Daten generiert nicht erzeugen ;) - damit stellt sich (zum Glück) die Frage (für mich) nicht, ansonsten hätte ich vermutlich eine iif-Variante ergänzt, damit käme ich zumindest problemlos bis 50 Spalten, das reicht dann immer (manchmal muss ich nämlich 2 Exporte zusammenfassen)
Wie gesagt, deinen Code schaue ich mir aber schon auch noch genauer an und probiere es damit - dieses UBound und Union ist mir noch völlig fremd...
Tommi
Anzeige

374 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige