Avatar billede kavlar Novice
25. november 2008 - 11:25 Der er 2 kommentarer og
1 løsning

Find nærmeste værdi

Hejsa.

Jeg forsøger at lave en macro, der tester om antallet af dage en levering er forsinket, ligger inden for ét interval eller et andet.

-uendelig til -8 = Før tiden
-7 til -1 = Til tiden
0 til 0 = Præcis
1 til uendlig = Forsinket

Jeg har forsøgt mig med:

TESTVALUE = Range("A1")
FOR_TIDEN = -7
TIL_TIDEN = -1
PRAECIS = 0


If TESTVALUE < FOR_TIDEN Then
  RESULT = "Før tiden"
  Else
    If TESTVALUE < TIL_TIDEN Then
      RESULT = "Til tiden"
      Else
        If TESTVALUE <= PRAECIS Then
        RESULT = "Præcis"
        Else
          RESULT = "Forsinket"
        End if
    End If
End If

Range("B1") = RESULT


Mit problem er, at testen skal ske på mange tusinde linier og for flere datatyper. Derfor kunne jeg godt tænke mig at optimere koden til at køre hurtigere. Er det her den mest oplagte måde, eller kunne man bruge et array (i så fald, hvordan)
Avatar billede kavlar Novice
25. november 2008 - 11:47 #1
Jeg tror det lykkedes mig med en Select Case:

For i = 1 To 13

Karakter = Cells(i, 4)
Select Case Karakter
    Case Is < -7
        GRade = "Før tid"
    Case Is < -1
        GRade = "til tiden"
    Case Is <= 0
        GRade = "Præcis"
    Case Is > 0
        GRade = "Forsinket"
End Select

Cells(i, 5) = GRade
Next i

Men er der en smartere løsning er i stadig velkommen til at skrive!
Avatar billede martin_moth Mester
04. december 2008 - 17:18 #2
Det får du næppe mere elegang :o)

Nu du åbenbart er i Excel, kan du bruge LookUp (slåop) funktionen i stedet for at skrive VBA-kode, men som VBA kode er en select-case da bon-bon
Avatar billede kavlar Novice
08. januar 2009 - 15:19 #3
Lukning af spørgsmål
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
Kurser inden for grundlæggende programmering

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