Avatar billede rvm Nybegynder
23. februar 2004 - 14:02 Der er 11 kommentarer og
1 løsning

Fra VBA Function til Alm. funktione

Jeg har nedenstående VBA Function som jeg selv har lavet. Den virker fint, men er desværre alt for langsom, når jeg indsætter den 10.000 gang :-(

Med den er jo ikke specielt avanceret, så mon ikke den kan konverteres til en almindelig hvis sætning, så jeg undgår det langsomme VBA programmering?

Function Kryds(StartDato As Date, Slutdato As Date, MandagIugen As Date, StartPakke As Date)
Dim SøndagIugen As Date

SøndagIugen = MandagIugen + 6

If StartDato < SøndagIugen And ((Slutdato > MandagIugen) Or Slutdato = #12:00:00 AM#) Then
    Kryds = "X"
Else
    Kryds = "-"
End If

If StartPakke <> #12:00:00 AM# Then
    If IsDate(StartPakke) Then
        If MandagIugen < StartPakke And StartPakke < SøndagIugen Then
            Kryds = "SP"
        End If
    End If
End If

End Function
Avatar billede kabbak Professor
23. februar 2004 - 14:14 #1
kan vi ikke få formatet for disse, der det datoer, tid eller datotid.

StartDato As Date, Slutdato As Date, MandagIugen As Date, StartPakke As Date
Avatar billede rvm Nybegynder
23. februar 2004 - 14:43 #2
Det er dato alle sammen (lige nu formateret som 10-01-04)
Avatar billede kabbak Professor
23. februar 2004 - 14:53 #3
hvorfor har du så denne

If StartPakke <> #12:00:00 AM# Then

det er jo et klokkeslæt
Avatar billede rvm Nybegynder
23. februar 2004 - 14:55 #4
Ja - jeg skrev egentligt "00:00:00" for at tjekke om cellen var tom, men en kollega foreslo den anden metode for at gøre koden hurtigere - det var bare ikke nok.

Så hvis sætningen tjekker på om cellen er tom.
Avatar billede rvm Nybegynder
23. februar 2004 - 14:57 #5
Sætningen "If IsDate(StartPakke) Then" kan også udelades, da vi godt kan gå ud fra, at hvis der står noget i cellen, så er det en dato.
Avatar billede rvm Nybegynder
23. februar 2004 - 15:03 #6
Dette er mit eget spæde forsøg

=HVIS(Og(StartPakke<>0;MandagIugen<StartPakke;StartPakke<SøndagIugen);"SP";HVIS(OG(StartDato<MandagIugen;Slutdato>MandagIugen)ELLER(Slutdato=0);"X";"-")

Men ELLER virker ikke
Avatar billede kabbak Professor
23. februar 2004 - 15:06 #7
Kan du ikke sende mig en kopi af arket, med en beskrivelse på hvad funktionen skal gøre, jeg kan ikke overskue, hvilke betingelser der skal opfyldes, og hvordan dataerne er opbygget.

Så vil jeg se på det i aften.

send til#kabbak@tiscali.dk


fjern, send til#
Avatar billede rvm Nybegynder
23. februar 2004 - 15:14 #8
Det kan jeg godt, men jeg mangler jo egentligt bare at finde ud af, hvordan jeg spørger med OG og ELLER i samme sætning:

If StartDato < SøndagIugen And ((Slutdato > MandagIugen) Or Slutdato = #12:00:00 AM#) Then

altså

Hvis A1<B1 og C1>D1 eller F1=0 Så "X" ellers "-"
Avatar billede kabbak Professor
23. februar 2004 - 15:24 #9
Hvis (og(A1<B1;C1>D1) eller(F1=0);"X" ;"-")
Avatar billede rvm Nybegynder
23. februar 2004 - 15:55 #10
Så er den løst - og den blev selvfølgelig totalt ugennemskuelig i sin endelige form:

=HVIS(OG(G$1<$D11;$D11<G$1+6);"SP";HVIS($E11="";"-";HVIS(ELLER($F11="";$F11>G$1)*OG($E11<G$1+6);"X";"-")))

men kabbak's sidste forslag hjalp mig meget på vej - havde ikke gennemskuet det med både OG og ELLER (og stjernen imellem)
Avatar billede rvm Nybegynder
23. februar 2004 - 15:56 #11
Skriver du lige et svar så du kan få point *S*
Avatar billede kabbak Professor
23. februar 2004 - 19:22 #12
et svar
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