[VBA] Suma, Średnia


(Danioss) #1

Witam,

Mam do zrobienia w Excelu za pomocą VBA przycisku, po kliknięciu którego program obliczy mi średnią. Jest to pierwszy mój styk z VBA, więc zacząłem od samego przycisku suma. Zapisałem go w ten sposób:

Private Sub CommandButton2_Click()


With Range("F20")

.Formula = "=SUMA(F6:F19)"

End With


MsgBox "Oto suma: ", suma

End Sub

Niemal działa - problem w tym, że w komórce F20 pojawia mi się ####, ale gdy na nią kliknę, widzę przecież, że ta "funkcja" VBA wrzuciła do niej "=SUMA(F6:F19). A jednak pojawiają się tylko ####.... Dopiero gdy kliknę w pasek formuły i wcisnę enter, #### zamieniają się na liczbę. Nie wiem z czego to wynika, dlatego proszę o pomoc. Co do średniej, to będę jeszcze pytał, jak będzie działać mi suma... Pozdrawiam EDIT: Jak na tę chwilę poradziłem sobie takim trochę kiepskim sposobem, jakim jest ten oto kod:

Range("f20") = [f6] + [f7] + [f8] + [f9] + [f10] + [f11] + [f12] + [f13] + [f14] + [f15] + [f16] + [f17] + [f18] + [f19]

Ale nadal mi zależy na tym jak zrobić to za pomocą pierwszego pomysłu.


(Drobok) #2

[F20].FormulaLocal = "suma(F6:F19)"


(Danioss) #3

Powinno być:

[F20].FormulaLocal = "=suma(F6:F19)"

Mój kod wygląda tak:

Private Sub CommandButton2_Click()


[F20].FormulaLocal = "=suma(F6:F19)"

[M7].FormulaLocal = "=średnia(F6:F19)"

[N7].FormulaLocal = "=(SUMA.ILOCZYNÓW(F6:F19;G6:G19))/SUMA(G6:G19)"

[O7].FormulaLocal = "=JEŻELI(N7>3,8;""TAK"";""NIE"")"


Range("m7").NumberFormat = "0.00"

Range("n7").NumberFormat = "0.00"



End Sub

W komórce M7 wyświetla zwykłą średnią, w komórce N7 wyświetla średnią ważoną, w komórce O7 wyświetla, czy student dostanie stypendium

Teraz muszę to zrobić tak, żeby było idiotoodporne, czyli wstawić if z warunkiem, że muszą być liczby w przedziale F6:F19... Problem w tym, że nie mam pojęcia jak wstawić ifa takiego, by sprawdzał, czy każda kolejna komórka zawiera liczbę czy znak. W C/C++ nie miałbym problemu - tutaj najzwyczajniej nie znam instrukcji i składni...