09. maj 2012 - 10:35Der er
13 kommentarer og 1 løsning
Simpel HVIS-makro i Excel
Jeg har et simpelt bogføringsskema, hvor jeg ønsker at gøre indtastningen væsentligt lettere.
På nuværende tidspunkt bruger jeg nedenstående makro:
//////////////// Sub Modposter() ' ' Genvejstast:Ctrl+b ' ActiveCell.FormulaR1C1 = "=RC4*-1" End Sub ////////////////
Makroen ganger pt blot kolonne D (som er min bankkolonne) ud med -1 (omvendt fortegn af hensyn til debet/kredit).
Jeg ønsker nu at makroen tager hensyn til nedenstående kriterier:
- Måling på række 3 i den kolonne man står i med markøren. Hvis cellen indeholder teksten "moms", skal makroen tage tallet i kolonne D i rækken man står i og gange med 0,8*-1 (som er beløbet eksl. moms). Hvis ikke cellen i række 3 indeholder teksten moms, skal makroen blot gange tallet i kolonne D med -1.
- Måling på indholdet i kolonne D, hvis tallet er negativt skal makroen tage indholdet af kolonne D, gange det med 0,2*-1 og postere tallet i kolonne G i samme række. Hvis tallet er positivt skal det samme ske, men posteringen skal ske i kolonne F.
Eksempel: I celle D25 har jeg en negativ postering på min bank på kr. -1.000.
Står jeg med markøren i celle L25 og trykker ctrl+b, vil makroen søge i L3, her finder den teksten "moms". Makroen måler nu på cellen for beløbet som er hævet på min bank som er D25, i celle L25 posteres D25*0,8*-1 og i G25 posteres D25*0,2*-1.
Sub Formel() Dim c As Range Set c = ActiveCell Dim momstekst As String momstekst = Cells(3, c.Column).Value If InStr(1, LCase(momstekst), "moms") > 0 Then ' moms c.Formula = "=-" & Cells(c.Row, 4).Address & "*0.8" Else c.Formula = "=-" & Cells(c.Row, 4).Address End If If Cells(c.Row, 4).Value < 0 Then Cells(c.Row, 7).Formula = "=-0.2*" & Cells(c.Row, 4).Address Else Cells(c.Row, 6).Formula = "=0.2*" & Cells(c.Row, 4).Address End If
Jeg kan se at såfremt teksten "moms" ikke fremgår af række 3 i den kolonne markøren er placeret, så ganger den rigtigt nok beløbet ud med -1 istedet for -0,8, men samtidig beregner den stadig -0,2 i hhv. kolonne F eller G. Kan vi ligeledes gøre disse celler afhængige af teksten "moms"?
Sub Formel() Dim c As Range Set c = ActiveCell Dim momstekst As String momstekst = Cells(3, c.Column).Value If InStr(1, LCase(momstekst), "moms") > 0 Then ' moms c.Formula = "=-" & Cells(c.Row, 4).Address & "*0.8" If Cells(c.Row, 4).Value < 0 Then Cells(c.Row, 7).Formula = "=-0.2*" & Cells(c.Row, 4).Address Else Cells(c.Row, 6).Formula = "=0.2*" & Cells(c.Row, 4).Address End If Else c.Formula = "=-" & Cells(c.Row, 4).Address If Cells(c.Row, 4).Value < 0 Then Cells(c.Row, 7).Formula = "=-" & Cells(c.Row, 4).Address Else Cells(c.Row, 6).Formula = "=" & Cells(c.Row, 4).Address End If End If End Sub
Ved brug af ovenstående fører den 500 ind i både G-kolonnen samt den kolonne man står i, hvis "moms" ikke fremgår af række 3. Her skulle den alene føre 500 i den markerede celle og ingen ting i F eller G.
Sub Formel() Dim c As Range Set c = ActiveCell Dim momstekst As String momstekst = Cells(3, c.Column).Value If InStr(1, LCase(momstekst), "moms") > 0 Then ' moms c.Formula = "=-" & Cells(c.Row, 4).Address & "*0.8" If Cells(c.Row, 4).Value < 0 Then Cells(c.Row, 7).Formula = "=-0.2*" & Cells(c.Row, 4).Address Else Cells(c.Row, 6).Formula = "=0.2*" & Cells(c.Row, 4).Address End If Else c.Formula = "=-" & Cells(c.Row, 4).Address ' If Cells(c.Row, 4).Value < 0 Then ' Cells(c.Row, 7).Formula = "=-" & Cells(c.Row, 4).Address ' Else ' Cells(c.Row, 6).Formula = "=" & Cells(c.Row, 4).Address ' End If End If End Sub
Det er som jeg ser det, nedenstående kode, som ud over at måle på om værdien er > eller < end 0, samtidig skal måle på om der i række 3 fremgår ordet "moms".
If Cells(c.Row, 4).Value < 0 Then Cells(c.Row, 7).Formula = "=-0.2*" & Cells(c.Row, 4).Address Else Cells(c.Row, 6).Formula = "=-0.2*" & Cells(c.Row, 4).Address End If
Jeg ved ikke om der findes en "If...And..."-funktion som tager højde for 2 forskellige kriterier?
Sub Formel() Dim c As Range Set c = ActiveCell Dim momstekst As String momstekst = Cells(3, c.Column).Value If InStr(1, LCase(momstekst), "moms") > 0 Then ' moms c.Formula = "=-" & Cells(c.Row, 4).Address & "*0.8" If Cells(c.Row, 4).Value < 0 Then Cells(c.Row, 7).Formula = "=-0.2*" & Cells(c.Row, 4).Address Else Cells(c.Row, 6).Formula = "=0.2*" & Cells(c.Row, 4).Address End If Else c.Formula = "=-" & Cells(c.Row, 4).Address End If End Sub
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.