Avatar billede mrkr Juniormester
05. oktober 2008 - 18:10 Der er 8 kommentarer og
1 løsning

Maks funktion i vba

Jeg skal have indsat det største tal der står i cellerne a2:a100.

Den har jeg styr på i en almindelig formel.
nu har jeg forsøgt at oversætte den til vba, uden held
Når jeg optager med makrooptageren får jeg følgende kode, men den indsætter en formel det er jeg ikke interesseret i.

Den skal blot indsætte en værdi feks. 2555.


ActiveCell = "=MAX(fakturaposter!R[2]C[-3]:R[100]C[-3])"
Avatar billede excelent Ekspert
05. oktober 2008 - 18:27 #1
x = Application.WorksheetFunction.Max(Sheets("Ark1").Range("A2:A100"))
Avatar billede mrkr Juniormester
05. oktober 2008 - 18:56 #2
yes. Tak for det

jeg sidder og roder med en anden temmelig lang formel, som jeg ønsker at få samme løsning på. Men kan ikke få "oversat" den til en application.worksheetsfunction....

Er det noget du kan hjælpe med?
Hvis ikke er det også ok, du har jo svaret på mit oprindelige spørgsmål :-)

formel:
=SUMPRODUKT(((('2008'!$C$2:$C$50000)>=$B$1)*(('2008'!$C$2:$C$50000)<=$B$2)*(('2008'!$D$2:$D$50000)=$A$5)*(('2008'!$E$2:$E$50000)=$A6)*'2008'!$I$2:$I$50000))/60

vba:
WorksheetFunction.SumProduct((((Sheets("2008").Range("C2:C50000")) >= Sheets("samlettid").Range("B1")) * ((Sheets("2008").Range("C2:C50000")) <= Sheets("samlettid").Range("B2")) * ((Sheets("2008").Range("D2:D50000")) = Sheets("samlettid").Range("A5")) * ((Sheets("2008").Range("E2:E50000")) = Sheets("samlettid").Range("A6")) * Sheets("2008").Range("I2:I50000"))) / 60
Avatar billede mrkr Juniormester
05. oktober 2008 - 18:56 #3
y = Application.WorksheetFunction.SumProduct((((Sheets("2008").Range("C2:C50000")) >= Sheets("samlettid").Range("B1")) * ((Sheets("2008").Range("C2:C50000")) <= Sheets("samlettid").Range("B2")) * ((Sheets("2008").Range("D2:D50000")) = Sheets("samlettid").Range("A5")) * ((Sheets("2008").Range("E2:E50000")) = Sheets("samlettid").Range("A6")) * Sheets("2008").Range("I2:I50000"))) / 60
Avatar billede mrkr Juniormester
05. oktober 2008 - 18:58 #4
jeg har ikke løst problemet. jeg har blot indsat hele koden ovenfor så I bedre kan se problemet :-)
Avatar billede excelent Ekspert
05. oktober 2008 - 19:05 #5
prøv
x = Evaluate("=SUMPRODUKT(((('2008'!$C$2:$C$50000)>=$B$1)*(('2008'!$C$2:$C$50000)<=$B$2)*(('2008'!$D$2:$D$50000)=$A$5)*(('2008'!$E$2:$E$50000)=$A6)*'2008'!$I$2:$I$50000))/60")
Avatar billede mrkr Juniormester
05. oktober 2008 - 19:25 #6
den skriver desværre #NAVN?
Jeg har forsøgt at præcisere alle arkenes navne i min oprindelige formel. Den virker som den skal.

Men den virker ikke når den bliver lavet til vba.

=SUMPRODUKT(((('2008'!$C$2:$C$50000)>=samlettid!$B$1)*(('2008'!$C$2:$C$50000)<=samlettid!$B$2)*(('2008'!$D$2:$D$50000)=samlettid!$A$5)*(('2008'!$E$2:$E$50000)=samlettid!$A6)*

Sub beregn_samlettid2()
x = Evaluate("=SUMPRODUKT(((('2008'!$C$2:$C$50000)>=samlettid!$B$1)*(('2008'!$C$2:$C$50000)<=samlettid!$B$2)*(('2008'!$D$2:$D$50000)=samlettid!$A$5)*(('2008'!$E$2:$E$50000)=samlettid!$A6)*'2008'!$I$2:$I$50000))/60")
Sheets("samlettid").Range("e1").Select
Sheets("samlettid").Range("e1") = x
End Sub
Avatar billede excelent Ekspert
05. oktober 2008 - 19:46 #7
prøv lige
x = Evaluate("=SUMPRODUCT(((('2008'!$C$2:$C$50000)>=$B$1)*(('2008'!$C$2:$C$50000)<=$B$2)*(('2008'!$D$2:$D$50000)=$A$5)*(('2008'!$E$2:$E$50000)=$A6)*'2008'!$I$2:$I$50000))/60")
Avatar billede mrkr Juniormester
05. oktober 2008 - 22:21 #8
JEP. Så var den der.
Mange tak for hjælpen.
Den får jeg meget gavn ud af.

Så mangler vi kun svaret. :-)
Avatar billede excelent Ekspert
07. oktober 2008 - 16:33 #9
kommer her :-)
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
Kategori
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

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