Avatar billede dave2000 Nybegynder
20. maj 2003 - 14:52 Der er 15 kommentarer og
2 løsninger

Middel værdi

Hej,

Jeg er ny her, så I må gerne være lidt præcise med Jeres svar.
Hvad er forskellen mellem de to nederste sætninger :

    "=AVERAGE('S1'!R[-3]C[-5]:R[2]C[-5])"  og
    "=MIDDELV('S1'!C5:C10)"

og hvorfor når jeg bruger det sidste så får jeg følgende svar :  #NAVN?
Jeg skal bare have gennemsnit af fem tal der står i kolonne C .
Kan jeg også definere nogle konstanter i begyndelsen af programmet og bruge dem? For eks. i stedet for (C5:C10)
kan jeg så skrive (C'X:C'Y)? Eller hvordan ?
Jeg har lavet en USERFORM og der er nogle tekstbokse og de tal der er i tekstbokse, eller bliver tastet ind, vil jeg
gerne overføre til de konstanter der er i programmet.
Hvordan gør jeg det?
Jeg håber at I forstår mit spørgsmål.

Mvh / David
Avatar billede bak Seniormester
20. maj 2003 - 15:06 #1
Du får #navn fordi det hedder MIDDEL og ikke MIDDELV
Der er ellers ikke den store forskel på formler, bortset fra at den øverste benytter relative referencer i forhold til hvor du står idet du indspiller.

Konstanterne ved variable
("C" & x & ":C" & y)

I øvrigt er 200 point i overkanten
Avatar billede bak Seniormester
20. maj 2003 - 15:11 #2
"=MIDDEL('S1'!C" & x & ":C" & y & ")"
Avatar billede bak Seniormester
20. maj 2003 - 15:24 #3
mht. textboxene og overførsel af variable kan du i det mudul hvor du har resten af programmet øverst skrive

Public x As Long
Public y As Long

dette gør x og y til globale variable, der nu kan bruges i alle moduler.

I koden til din userform skal du så overføre værdierne fra textboxen til disse globale variable.
fx. med et klik på en knap

Private Sub CommandButton1_Click()
x = CLng(Me.TextBox1)
y = CLng(Me.TextBox2)
End Sub

x og y er nu fyldt med indholdet af textboxene og kan bruges i resten af dit program
Avatar billede jkrons Professor
20. maj 2003 - 15:42 #4
AVERAGE svarer til den danske MIDDEL. Den beregner gennemsnittet af de celler i et område, der indeholder tal. Celler der er tomme eller indeholder tekst udelades af beregningen.

MIDDELV svarer til den engelske AVERAGEA. Den beregner gennemsnittet af et område, idet tommer celler eller celler med tekst indgår i beregningen med værdien 0.

MIDDEL af 1, 2, Ole er således 1,5
MIDDELV af 1, 2, Ole er 1.

I dit tilfælde bør du bruge MIDDEL. Fejlen opstår - tror jeg, fordi du laver beregningen i kode, og her kendes ikke de danske funktionsnavne - eller også har du en engelsk version.
Avatar billede bak Seniormester
20. maj 2003 - 15:48 #5
Yes jkrons
Det betyder, hvis man har en dansk version, at man kan bruge
Range("A1").Formula="=AVERAGE('S1'!C" & x & ":C" & y & ")"

eller
Range("A1").FormulaLocal="=MIDDEL('S1'!C" & x & ":C" & y & ")"

hvor formulalocal tillader det danske formelnavn.
Avatar billede jkrons Professor
20. maj 2003 - 15:56 #6
bak-> Den mulighed havde jeg overset. Men mest fordi jeg havde opfattet det anderledes, nemlig med beregningen i kode á la:

Range("a1").Value = Application.WorksheetFunction.Average(a, b, c)

men jeg kan godt se, at det vil give fejlen i VBA, ikke i cellen.
Avatar billede bak Seniormester
20. maj 2003 - 16:09 #7
I sådan et tilfælde plejer jeg bare at give alderen skyld for det :-)
Avatar billede jkrons Professor
20. maj 2003 - 16:10 #8
Og så har jeg været censor hele dagen, så mit hoved er lidt "omtåget" :-)
Avatar billede dave2000 Nybegynder
21. maj 2003 - 09:43 #9
Hej bak og jkrons
Tak for hjælpen.
bak
Det der med AVERAGE virker godt nok, men konstanterne kan jeg slet ikke bruge.
Hvis jeg skal tage gennemsnit af de tal der står i celle 5 til 10 kolonne C og taster 5 og 10 i hhv. textboks1 og textboks2 så får jeg følgende  :

    ="AVERAGE('S1'!C:C)" og ikke ="AVERAGE('S1'!C5:C10)"

Hvad er der galt? eller er det mig der ikke kan finde ud af det?
For resten er x = CLng(Me.TextBox1) det samme som x = CLng(Me.TextBox1.Text).

Mvh / David
Avatar billede dave2000 Nybegynder
21. maj 2003 - 10:22 #10
Hej bak og jkrons
Tak for hjælpen.
bak
Det der med AVERAGE virker godt nok, men konstanterne kan jeg slet ikke bruge.
Hvis jeg skal tage gennemsnit af de tal der står i celle 5 til 10 kolonne C og taster 5 og 10 i hhv. textboks1 og textboks2 så får jeg følgende  :

    ="AVERAGE('S1'!C:C)" og ikke ="AVERAGE('S1'!C5:C10)"

Hvad er der galt? eller er det mig der ikke kan finde ud af det?
For resten er x = CLng(Me.TextBox1) det samme som x = CLng(Me.TextBox1.Text).

Mvh / David
Avatar billede dave2000 Nybegynder
21. maj 2003 - 11:10 #11
For resten kan jeg også bruge en konstant i stedet for "S1" i den følgende
sætning : 
              Sheets("S1").Select

og hvordan gør man det?
Avatar billede jkrons Professor
21. maj 2003 - 16:14 #12
Dette burde virke:

Dim a As String, b As String
a = Me.TextBox1
b = Me.TextBox2
Range("A1").Formula = "=AVERAGE('ark1'!C" & a & ":C" & b & ")"
Avatar billede jkrons Professor
21. maj 2003 - 16:18 #13
Til dit sidste spørgsmål:

Dim c As String
c = Me!TextBox3
Sheets(c).Select
Avatar billede dave2000 Nybegynder
22. maj 2003 - 08:53 #14
jkrons
Mange tak for hjælpen.
Det virkede.
Avatar billede jkrons Professor
22. maj 2003 - 17:28 #15
Velbekomme!  Men skulle der ikke have været lidt point til bak. Det var trods alt ham, der startede?
Avatar billede dave2000 Nybegynder
23. maj 2003 - 14:26 #16
jkrons
Jo, men jeg vidste ikke hvordan jeg skulle gøre det.
Jeg opdagede først i går at han skulle sende et svar først og ikke kommentar.
Hvordan kan jeg give bak point nu?
Avatar billede bak Seniormester
23. maj 2003 - 14:40 #17
Det er helt ok. Jeg blev jo ligesom lidt "væk" og lod jkrons om resten :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester