ich benutze Excel 2000 unter XP und versuche mich gerade an einer einfachen
Automatisierung.
Um Schleifen zu benutzen, brauche ich die cells-Anweisung (so stehts in
meinem VBABuch):
Cells(2, 2).Select
ActiveCell.FormulaR1C1 = "=average(cells(3,2):cells(2,7))"
Mit diesem Code wird in B2 allerdings nicht wie gewünscht der Mittelwert
eingetragen, sondern nur #Name?
Später möchte ich mit cells auch Mittelwerte von einem anderen worksheet
ausrechnen.
Kann mir jemand helfen?
gernot
"Gernot John" <g_j...@web.de> wrote in message
news:ON8d1jmTCHA.2584@tkmsftngp13...
Versuche es mit:
ActiveCell.Formula = "=average(cells(3,2):cells(2,7))"
Arvi Laanemets
Entweder es steht nicht exact so in deinem buch oder das buch hat
fehler...;)
so wäre es richtiger:
Cells(2, 2).Select
ActiveCell.FormulaR1C1 = "=average(R3C2:R2C7)"
Wobei das so außerdem noch einen Zirkelbezug gibt.... D.h. das
deine Formel in einer zelle steht, aus der der mittelwert mitberechnet
werden soll.
spare dir bitte aber einen schritt in dem du das select wegläßt und
das ganze dann direkt anhängst:
Cells(2, 2).ActiveCell.FormulaR1C1 = "=average(R3C2:R2C7)"
am besten wäre es natürlich jetzt noch, wenn du ganz genau wirst,
indem du noch hinzufügst, in welche Tabelle das eingefügt werden soll!
Worksheets("Tabelle1").Cells ..........
bye
Ulli.
Gernot John schrieb:
Die angesprochenen zellen sind uebrigens alles mit zahlen belegt.
"Arvi Laanemets" <ar...@tarkon.ee> schrieb im Newsbeitrag
news:aki1h4$3se$1...@kadri.ut.ee...
nur ne kleine Ergänzung.
Es gibt noch weitere Möglichkeiten das "Problem" zu lösen:
1. Der feste Eintrag der Zellen:
Cells(2, 2).Formula = "=average($B$2:$G$7)"
2. eine Zusammensetzung mit Cells(... , ...)
Cells(3, 2).Formula = "=Average(" & Cells(3, 2).Address & ":" & Cells(2,
7).Address & ")"
Auf die Varianten mit FormulaLocal etc will ich hier
nicht weiter eingehen... ;-)
Beides liefert hier das gleiche Ergebnis. Aber ich würde auch
drauf achten, dass man noch das Worksheet mit angibt, da
es dann nicht zu unbeabsichtigten Fehlern kommen kann (sollte).
Gruss und wie gesagt nur ne kleine Ergänzung
Daniel
"Ulli Tolksdorf" <Ull...@gmx.de> schrieb im Newsbeitrag
news:3D6C8CE5...@gmx.de...
das hat mit den Einstellungen nichts zu tun.
Wenn Du Dir nachdem Du das Makro ausgeführt hast
mal den Inhalt der Zelle anschaust wirst Du sehen, dass
dort
=MITTELWERT(cells(3;2):cells(2;7))
steht. D.h. Excel interpretiert den gesamten Wert der
zwischen den "" steht als eine Formel und da es dann
keine Zellenangaben sind wird auch nur eine Fehler-
meldung angezeigt.
Schau Dir mal den anderen Zweig Deines Threats an
dort sind Vorschläge von Ulli und mir die eigentlich
funktionieren sollten... *g*
Gruss
Daniel
"Gernot John" <g_j...@web.de> schrieb im Newsbeitrag
news:eN6P4CnTCHA.1336@tkmsftngp11...
Habe ja nicht deiner Formel genauer angucken. Versuch mal dies:
ActiveCell.Formula = "=average(cells(3,2).Address & ":" &
cells(2,7).Address)"
Arvi Laanemets
das hat soweit funktioniert. Vielen Dank! Ich dachte ich könnte das weitere
alleine...
1. Jetzt will ich das Ganze aber in eine Schleife einbinden
ich dachte mir das so: geht aber nicht
Cells(2, spalte).Select
ActiveCell.FormulaR1C1 = "=average(R2C(spalte2):R3C(spalte2+3))"
2. Außerdem sollen die Mittelwerte von einem anderen Tabellenblatt "tmp"
berechnet werden.
p.s. soll man bei einer Antwort in der NG sein Zeug vor oder hinter die
schon bestehenden Zeilen setzen?
Grüße
gernot
"Daniel Schmitz" <DaSc...@lycos.de> schrieb im Newsbeitrag
news:aki14o$s79$1...@news01.khis.de...
> 1. Jetzt will ich das Ganze aber in eine Schleife einbinden
>
> ich dachte mir das so: geht aber nicht
>
> Cells(2, spalte).Select
>
> ActiveCell.FormulaR1C1 = "=average(R2C(spalte2):R3C(spalte2+3))"
Soweit schon richtig gedacht allerdings etwas verkehrt umgesetzt.
Wie ich eben schon geschrieben habe musst Du Dir, wenn Du die
Spalten "dynamisch" haben willst, den String zusammen setzen. D.h.
mit dem kaufmännischen und (&) verbinden. In Deinem Fall:
ActiveCell.FormulaR1C1 = "=average(R2C" & spalte2 & ":R3C" & spalte2+3 & ")"
Ich weiß natürlich nicht wie Du Spalte2 berechnest aber so funktioniert´s
> 2. Außerdem sollen die Mittelwerte von einem anderen Tabellenblatt "tmp"
> berechnet werden.
Wenn das so ist kannst Du es wie folgt lösen:
ActiveCell.Formula = "=average(Tmp!$B$" & Spalte2 & ":Tmp!$C$" & Spalte2 + 3
& ")"
oder
ActiveCell.FormulaLocal = "=Mittelwert(Tmp!$B$" & Spalte2 & ":Tmp!$C$" &
Spalte2 + 3 & ")"
> p.s. soll man bei einer Antwort in der NG sein Zeug vor oder hinter die
> schon bestehenden Zeilen setzen?
Zu dem Thema gibt es glaube ich verschiedene Meinungen. Aber die die am
meisten Verbreitung findet ist FoTu (FullquoteObenTextUnten) und nicht ToFu
was ich allerdings lieber mache... *g*
Und noch eins, wie wir vorher schon gesagt haben, versuch ohne das
Select auszukommen. Das Select macht die Sache unübersichtlicher
und langsamer.
HTH
Daniel
"Daniel Schmitz" <DaSc...@lycos.de> schrieb:
> Zu dem Thema gibt es glaube ich verschiedene Meinungen. Aber die die
> am meisten Verbreitung findet ist FoTu (FullquoteObenTextUnten) und
> nicht ToFu was ich allerdings lieber mache... *g*
>
ob ToFu oder FoTu, Fullquote ist (fast) immer
verkehrt. ;-)
Die richtige Adresse: http://got.to/quote
MfG
Michael
--
-------------------------------------------
Michael Schwimmer
Home : http://schwimmer.bei.t-online.de