Avatar billede Henry Poulsen Mester
16. september 2008 - 22:13 Der er 3 kommentarer og
1 løsning

Excel 2007 VBA kode regner forker med Div operatoren

I en projektstyring har jeg en arbejdsopgave på 112 timer. Hver arbejdsdag er 7,40 timer. Med Div division (\)forventede jeg at få resultatet 15 hele arbejdsdage og resterende timer 1 ved Mod division (15 dage a' 7,40 timer = 111 timer + 1 time). Men...
Div division giver 16 og Mod division får jeg ikke til at vise decimaltal.
Ved nogle variabler (hours = 8, 20) bliver regnestykket med nedenstående kode rigtig.

  Dim hours, days As Integer
  Const arbt = 7.4
days = hours \ arbt
hours = hours - days * arbt (istedet for Mod-division).
Er der en af jer, der gennemskuer hvad jeg ikke forstår?
Hilsen Henry
Avatar billede sjap Praktikant
16. september 2008 - 23:44 #1
Skyldes det at \ operatoren er til "heltalsdivision"? Dvs. den udfører ikke 112/7,4 men i stedet 112/7 (som faktisk giver 16!).

Du kan bruge Int-funktionen i stedet for:

    Int(112 / 7.4)
Avatar billede Henry Poulsen Mester
24. september 2008 - 21:45 #2
Hej Sjap
Når jeg ser i VBA hjælp, finder jeg følgende, som jeg ikke synes jeg kan bruge:
MyNumber = Int(99.8)    ' Returns 99.
MyNumber = Int(-99.8)    ' Returns -100.
MyNumber = Int(-99.2)    ' Returns -100.
Jeg har i stedet valgt at lade makro indsætte følgende formel i en tom celle:
"=FLOOR(RC[-1],1)" (runder altid ned til nærmeste heltal). Celleværdi læser jeg ind i en variabel til senere brug og makro sletter celleindhold. Det virker fint, men er lidt mere kringlet end jeg troede nødvendig.
Jeg lukke spørgsmålet om lidt, men tak for dit respons.
Hilsen Henry
Avatar billede Henry Poulsen Mester
24. september 2008 - 21:47 #3
Denne formel beregner det tal jeg skal bruge:
"=FLOOR(RC[-1],1)" (runder altid ned til nærmeste heltal).
Spørgsmålet lukkes.
Hilsen Henry
Avatar billede sjap Praktikant
25. september 2008 - 17:28 #4
Int runder også altid ned til nærmeste heltal - ved positive tal. Så medmindre du også skal gennemføre beregningen for negative tal, så er mit forslag da brugbart.

Så vidt jeg lige husker, så kan Floor ikke anvendes, hvis kun det ene tal er negativt - men jeg kan huske forkert.

Når du så vælger at bruge regnearksfunktionen i stedet for VBA, så ville det være enklere at bruge Int (som jeg også mener er navnet på regnearksfunktionen - den hedder Heltal på dansk) - i hvert tilfælde når du alligevel vil afrunde til heltal.
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