Avatar billede christopher21 Juniormester
09. marts 2018 - 00:59 Der er 3 kommentarer og
1 løsning

If sætning i VBA

Jeg skal udrengne en forventet karakter for den enkelte studerende. Karakteren udregnes efter følgende metode:
Hvis TILMELD_STATUS er ”plads” tildeles to point, ved ”venteliste” tildeles ét point, ellers tildeles ingen point.
Hvis CHECK_STATUS er ”godkendt” tildeles ét point, ved ”afvist” tildeles minus ét point og ved ”ej checket” tildeles ingen point.
Hvis tilmeldingsdatoen ligger i juni eller december tildeles ét point, hvis datoen ligger maj eller november tildeles to point, ellers tildeles ingen point.
Den forventede karakter udregnes efter følgende kalkule:
5 point = 10
4 point = 7
3 point = 4
2 point = 02
1 point = 00
0 eller -1 point = -3

Kan dette udregnes i VBA og i så fald hvordan?
Avatar billede Slettet bruger
09. marts 2018 - 03:06 #1
du bør bruge case istedet. IF er til simple ting.
https://www.techonthenet.com/excel/formulas/case.php

lad mig prøve:

Select Case Points
  Case Is CHECK_STATUS="godkendt"
      Points = 1
  Case CHECK_STATUS="afvist"
      Points=Points-1
  Case CHECK_STATUS="ejchecket"
      Points=Points
  End Select

og anden del:

Select Case Month
  Case "Juni", "December"
      Points=Points+1
  Case "Maj", "November"
      Points=Points+2
  End Select

det kan også være det er nemmere at lave med SWITCH.
du skal jo udregne din karakterskala.. (kender jo ikke dit program)
https://www.techonthenet.com/excel/formulas/switch_ws.php
Avatar billede Slettet bruger
09. marts 2018 - 03:17 #2
Cristopher: det er fint med eksperten, men jeg har et forslag:

Køb en VBA bog, og lav alle eksemplerne i den.
det vi medføre at du kan tingene i hovedet, og så bare lige slår op for hurtigt at checke, når du kommer i tvivl.
Avatar billede finb Ekspert
09. marts 2018 - 08:35 #3
Til spørger:
Har du ikke lige spurgt om det ?
Avatar billede bak Seniormester
11. marts 2018 - 12:16 #4
Indsæt denne kode i et modul. Du kan derefter bruge det direkte i regnearket som brugerdefineret funktion

Public Function ForventetKarakter(tilmeld_status As String, check_status As String, tilmeldingsdato As Date) As String
    Dim iNumberOfPoints As Integer
    iNumberOfPoints = 0
    If LCase(tilmeld_status) = "plads" Then iNumberOfPoints = iNumberOfPoints + 2
    If LCase(tilmeld_status) = "venteliste" Then iNumberOfPoints = iNumberOfPoints + 1
    If LCase(check_status) = "godkendt" Then iNumberOfPoints = iNumberOfPoints + 1
    If LCase(check_status) = "afvist" Then iNumberOfPoints = iNumberOfPoints - 1
    If Month(tilmeldingsdato) = 6 Or Month(tilmeldingsdato) = 12 Then iNumberOfPoints = iNumberOfPoints + 1
    If Month(tilmeldingsdato) = 5 Or Month(tilmeldingsdato) = 11 Then iNumberOfPoints = iNumberOfPoints + 2
   
    Select Case iNumberOfPoints
        Case 0: ForventetKarakter = "-3"
        Case 1: ForventetKarakter = "00"
        Case 2: ForventetKarakter = "02"
        Case 3: ForventetKarakter = "4"
        Case 4: ForventetKarakter = "7"
        Case 5: ForventetKarakter = "10"
        Case Else
    End Select
   
End Function
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