Avatar billede sjogren Novice
04. marts 2002 - 15:59 Der er 2 kommentarer og
1 løsning

3-dimentionel matrix i VBA.

Jeg har nørklet med at skrive en kode der kan returnere en værdi afhængig af 3 variable, MEN den virker desværre ikke korrekt!! Koden ser indtil videre sådan ud:

Dim SV As Double, OD As Double, EI As Double, Krav As Double
SV = Range("Solvensvægt").Value
OD = Range("OverdækPct").Value
EI = Range("EstIndtj").Value

If EI <= 0.02 And OD <= 0.25 Then
    If SV = 0 Then Krav = 1.25
    If SV > 0 And SV <= 0.2 Then Krav = 1.5
    If SV > 0.2 And SV <= 0.5 Then Krav = 1.75
    If SV > 0.5 Then Krav = 2

ElseIf EI > 0.02 And EI <= 0.025 And OD > 0.25 And OD <= 0.5 Then
    If SV = 0 Then Krav = 1.25
    If SV > 0 And SV <= 0.2 Then Krav = 1.25
    If SV > 0.2 And SV <= 0.5 Then Krav = 1.5
    If SV > 0.5 Then Krav = EI * 100

ElseIf EI > 0.025 And EI <= 0.03 And OD > 0.5 And OD <= 0.75 Then
    If SV = 0 Then Krav = 1
    If SV > 0 And SV <= 0.2 Then Krav = 1
    If SV > 0.2 And SV <= 0.5 Then Krav = 1.25
    If SV > 0.5 Then Krav = EI * 100

ElseIf EI > 0.03 And OD > 0.75 Then
    If SV = 0 Then Krav = 1
    If SV > 0 And SV <= 0.2 Then Krav = 1
    If SV > 0.2 And SV <= 0.5 Then Krav = 1.25
    If SV > 0.5 Then Krav = EI * 100
End If
Range("SvMarginal").Value = Format(Krav / 100, "0.00%")

Jeg håber der sidder en haj derude som kan og vil hjælpe mig!



Avatar billede bak Seniormester
04. marts 2002 - 19:51 #1
Et bud:Dim SV As Double, OD As Double, EI As Double, Krav As Double
SV = Range("Solvensvægt").Value
OD = Range("OverdækPct").Value
EI = Range("EstIndtj").Value
Krav = 1
If (EI <= 0.02 And OD <= 0.25) Then
    Select Case SV
    Case 0: Krav = 1.25
    Case 0 To 0.2: Krav = 1.5
    Case 0.201 To 0.5: Krav = 1.75
    Case Is > 0.5: Krav = 2
    End Select

ElseIf (EI > 0.02 And EI <= 0.025) And (OD > 0.25 And OD <= 0.5) Then
    Select Case SV
    Case 0: Krav = 1.25
    Case 0 To 0.2: Krav = 1.25
    Case 0.201 To 0.5: Krav = 1.5
    Case Is > 0.5: Krav = EI * 100
    End Select

ElseIf EI > 0.025 And EI <= 0.03 And OD > 0.5 And OD <= 0.75 Then
    Select Case SV
    Case 0: Krav = 1.25
    Case 0 To 0.2: Krav = 1.25
    Case 0.201 To 0.5: Krav = 1.5
    Case Is > 0.5: Krav = EI * 100
    End Select

ElseIf EI > 0.03 And OD > 0.75 Then
    Select Case SV
    Case 0: Krav = 1.25
    Case 0 To 0.2: Krav = 1.25
    Case 0.201 To 0.5: Krav = 1.5
    Case Is > 0.5: Krav = EI * 100
    End Select
End If
Range("SvMarginal").Value = Format(Krav / 100, "0.00%")
Avatar billede sjogren Novice
05. marts 2002 - 10:28 #2
Hej bak

Dit forslag spiller heller ikke helt "rent", måske det hjælper hvis jeg skitserer matricen:

EI:              2,0%    2,5%    3,0%    >3%
-----------|-----------------------------------   
SV:  0%  |    1,25%    1,25%    1,00%    1,00%
    20%  |    1,50%    1,25%    1,00%    1,00%
    50%  |    1,75%    1,50%    1,25%    1,25%
    100%  |    2,00%    2,50%    3,00%    >3
-----------|-----------------------------------       
OD :              25%    50%    75%    100%

Måske ligger der en begrænsning eller anden finurlighed i Excel's If-struktur, mv. som jeg ikke er bekendt med!
Avatar billede bak Seniormester
06. marts 2002 - 11:11 #3
Jeg synes nu den kører helt godt, jeg havde bare sat værdierne lidt forkert. :-)

Dim SV As Double, OD As Double, EI As Double, Krav As Double
SV = Range("Solvensvægt").Value
OD = Range("OverdækPct").Value
EI = Range("EstIndtj").Value
Krav = 0
If (EI <= 0.02 And OD <= 0.25) Then
    Select Case SV
    Case 0: Krav = 1.25
    Case 0 To 0.2: Krav = 1.5
    Case 0.201 To 0.5: Krav = 1.75
    Case Is > 0.5: Krav = 2
    End Select

ElseIf (EI > 0.02 And EI <= 0.025) And (OD > 0.25 And OD <= 0.5) Then
    Select Case SV
    Case 0: Krav = 1.25
    Case 0 To 0.2: Krav = 1.25
    Case 0.201 To 0.5: Krav = 1.5
    Case Is > 0.5: Krav = EI * 100
    End Select

ElseIf EI > 0.025 And EI <= 0.03 And OD > 0.5 And OD <= 0.75 Then
    Select Case SV
    Case 0: Krav = 1
    Case 0 To 0.2: Krav = 1
    Case 0.201 To 0.5: Krav = 1.25
    Case Is > 0.5: Krav = EI * 100
    End Select

ElseIf EI > 0.03 And OD > 0.75 Then
    Select Case SV
    Case 0: Krav = 1
    Case 0 To 0.2: Krav = 1
    Case 0.201 To 0.5: Krav = 1.25
    Case Is > 0.5: Krav = EI * 100
    End Select
End If
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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