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.
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
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.