Avatar billede HHA Professor
10. januar 2023 - 12:07 Der er 5 kommentarer og
1 løsning

VBA If And Then Else

Hejsa,

Døjer med at finde ud af hvordan jeg laver nedenstående så det virker.
Det er den del med Else, jeg ikke rigtigt ved hvordan jeg skal sætte sammen.

Håber der er nogen der kan hjælpe mig på vej med denne, da jeg har ca. 90.000 linjer at opdatere.

        Dim LR1 As Long
   
    Application.ScreenUpdating = False
    Set ws1 = Sheets("Ark1")
    LR1 = ws1.Range("F" & Rows.Count).End(xlUp).Row
    For i = 1 To LR1
    If ws1.Range("F" & i).Value > 0 And ws1.Range("F" & i).Value <> ws1.Range("E" & i).Value Then
        Range("H" & i) = Range("E" & i) * 1.2
        Range("J" & i) = Range("E" & i) * 1.1
        Range("L" & i) = Range("F" & i)
        Range("N" & i) = Range("F" & i)
      ws1.Range("I" & i).Value = "DKK"
      ws1.Range("K" & i).Value = "DKK"
      ws1.Range("M" & i).Value = "DKK"
      ws1.Range("O" & i).Value = "DKK"
     
    Else:
        Range("F" & i) = Range(("E" & i) SÅ SKAL DEN TILPASSE VÆRDIEN EFTER FØLGENDE: =HVIS(E>10000;E*1,2;HVIS(E>5000;E*1,3;HVIS(E2>2500;E*1,5;HVIS(E>1000;E*2;HVIS(E>=0;E*3;10000000))))))
     
    End If
Avatar billede store-morten Ekspert
10. januar 2023 - 19:15 #1
Så hvis E = F
så skal E rettes/ganges med henholdsvis 1,2 - 1,5 - 2 eller 3 ?
Avatar billede ebea Ekspert
10. januar 2023 - 19:34 #2
Prøv denne formel linje, efter din Else:   
Hele teksten herunder er ud i én linje.

        Worksheets("Formula").Range("F" & i).Worksheets("Formula").Range(("E" & i)).Formula = "HVIS(E>10000;E*1,2;HVIS(E>5000;E*1,3;HVIS(E2>2500;E*1,5;HVIS(E>1000;E*2;HVIS(E>=0;E*3;10000000))))))"")"
Avatar billede HHA Professor
10. januar 2023 - 19:48 #3
@store-morten,
Ja, bare modsat, hvis F = E

@ebea, det vil jeg prøve i morgen, da jeg desværre ikke fik min bærbare med fra arbejde :)
Avatar billede store-morten Ekspert
10. januar 2023 - 20:01 #4
Er: E = F ikke det samme som F = E
Avatar billede store-morten Ekspert
10. januar 2023 - 20:16 #5
Prøv
Sub test()
        Dim LR1 As Long
 
    Application.ScreenUpdating = False
    Set ws1 = Sheets("Ark1")
    LR1 = ws1.Range("F" & Rows.Count).End(xlUp).Row
    For i = 1 To LR1
        If ws1.Range("F" & i).Value > 0 And ws1.Range("F" & i).Value <> ws1.Range("E" & i).Value Then
            Range("H" & i) = Range("E" & i) * 1.2
            Range("J" & i) = Range("E" & i) * 1.1
            Range("L" & i) = Range("F" & i)
            Range("N" & i) = Range("F" & i)
          ws1.Range("I" & i).Value = "DKK"
          ws1.Range("K" & i).Value = "DKK"
          ws1.Range("M" & i).Value = "DKK"
          ws1.Range("O" & i).Value = "DKK"
    Else
        If Range("E" & i) = Range("F" & i) Then
            If Range("E" & i) > 10000 Then
            Range("E" & i) = Range("E" & i) * 1.2
            GoTo Fortsæt
            End If
       
            If Range("E" & i) > 2500 Then
            Range("E" & i) = Range("E" & i) * 1.5
            GoTo Fortsæt
            End If
       
            If Range("E" & i) > 1000 Then
            Range("E" & i) = Range("E" & i) * 2
            GoTo Fortsæt
            End If
       
            If Range("E" & i) >= 0 Then
            Range("E" & i) = Range("E" & i) * 3
            GoTo Fortsæt
            End If
        End If
    End If
Fortsæt:
    Next
    Application.ScreenUpdating = True
End Sub
Avatar billede HHA Professor
11. januar 2023 - 07:57 #6
Hejsa ebea og store-morten,

Takker for jeres altid ihærdige indsats 👍👌

@ebea
Prøvede lidt med det du foreslog, men havde ikke rigtigt held med det.
Det er nok mig der ikke kunne få den til at makke rette.

@store-morten
Du fik lavet et næsten færdigt resultat til mig, takker.
Jeg skulle dog bygge noget mere på, da jeg ikke havde lagt det hele op. Dog med vilje.
Jeg skal jo også lære af den hjælp I kommer med og ikke bare bede om den færdige kode.
Det jeg nok ikke kunne gennemskue, er det med at lave flere If'er, men det har du da vist mig nu 👍

Endnu en stor tak til jer to for den ihærdige indsats her i forummet, TAK!

Det færdige resultat:

Sub test()

        Dim LR1 As Long

    Application.ScreenUpdating = False
    Set ws1 = Sheets("Ark1")
    LR1 = ws1.Range("F" & Rows.Count).End(xlUp).Row
    For i = 1 To LR1
        If ws1.Range("F" & i).Value > 0 And ws1.Range("F" & i).Value <> ws1.Range("E" & i).Value Then
            Range("H" & i) = Range("E" & i) * 1.2
            Range("J" & i) = Range("E" & i) * 1.1
            Range("L" & i) = Range("F" & i)
            Range("N" & i) = Range("F" & i)
          ws1.Range("I" & i).Value = "DKK"
          ws1.Range("K" & i).Value = "DKK"
          ws1.Range("M" & i).Value = "DKK"
          ws1.Range("O" & i).Value = "DKK"
    Else
        If Range("E" & i) = Range("F" & i) Then
            If Range("E" & i) > 10000 Then
            Range("F" & i) = Range("E" & i) * 1.2
            Range("H" & i) = Range("E" & i) * 1.2
            Range("J" & i) = Range("E" & i) * 1.1
            Range("L" & i) = Range("E" & i) * 1.2
            Range("N" & i) = Range("E" & i) * 1.2
            GoTo Fortsæt
            End If
     
            If Range("E" & i) > 2500 Then
            Range("F" & i) = Range("E" & i) * 1.5
            Range("H" & i) = Range("E" & i) * 1.2
            Range("J" & i) = Range("E" & i) * 1.1
            Range("L" & i) = Range("E" & i) * 1.5
            Range("N" & i) = Range("E" & i) * 1.5
            GoTo Fortsæt
            End If
     
            If Range("E" & i) > 1000 Then
            Range("F" & i) = Range("E" & i) * 2
            Range("H" & i) = Range("E" & i) * 1.2
            Range("J" & i) = Range("E" & i) * 1.1
            Range("L" & i) = Range("E" & i) * 2
            Range("N" & i) = Range("E" & i) * 2
            GoTo Fortsæt
            End If
     
            If Range("E" & i) >= 0 Then
            Range("F" & i) = Range("E" & i) * 3
            Range("H" & i) = Range("E" & i) * 1.2
            Range("J" & i) = Range("E" & i) * 1.1
            Range("L" & i) = Range("E" & i) * 3
            Range("N" & i) = Range("E" & i) * 3
            GoTo Fortsæt
            End If
           
        End If
    End If
Fortsæt:
    Next
    Application.ScreenUpdating = True
End Sub
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
Vi har et stort udvalg af Excel kurser. Find lige det kursus der passer dig lige her.

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