Avatar billede jensen363 Forsker
12. marts 2007 - 17:56 Der er 6 kommentarer og
1 løsning

Modulkode : Summering for udvalgte kontonumre

Jeg har behov for en modulkode, som summerer en række debet/kredit summer for en række kontonumre, hvis et bestemt kriterie er opfyldt.

Kolonnerne indholder følgende :

A : KtoGrp
B : KontoNr
C : Bogføringsdato
D : BilagsNr
E : DelregnskabsKode
F : Beskrivelse
G : Debet
H : Kredit
I : SUM

Hvis værdien i kolonne I ( SUM ) er "J", så skal det pågældende kontonummer's Debet og Kredit saldo summeres pr. måned. De ost hvorpå summereringen skabes, slettes efterfølgende.

Hvis værdien i kolonne I ( SUM ) er "N" skal posten bibeholdes

For de kontonumre som summeres, skal der ydermere ske følgende :

Værdien i KtoGrp, KontoNr og DelregnskabsKode forbliver uændret.

Bilagsdato erstattes af MD-ÅÅÅÅ 

Beskrivelsen ændres til teksten : "SUM FRA NAVISION."

Er der een som kan klare den ????
Avatar billede supertekst Ekspert
13. marts 2007 - 08:55 #1
Måske - men en lille ilustration(før/efter) ville nok lette forståelsen.
Avatar billede jensen363 Forsker
13. marts 2007 - 09:13 #2
Jeg kan sende et regnearkseksempel ... har du en mail ?
Avatar billede jensen363 Forsker
13. marts 2007 - 10:58 #3
Supertekst > har du opgivet ?
Avatar billede supertekst Ekspert
13. marts 2007 - 11:00 #4
Nej da - pb@supertekst-it.dk
Avatar billede jensen363 Forsker
14. marts 2007 - 09:46 #5
Løsning godkendt ... Imponerende performance ( testet med 25.000 poster )

Læg venligst svar :-)
Avatar billede supertekst Ekspert
14. marts 2007 - 10:35 #6
Tak for det....

Her er koden:
Dim rækFør, rækEfter, flagJ As Boolean
Dim ktoGrp, ktoNr, bDato As Date, md, bNr, delRgn, beskriv, debet As Variant, kredit As Variant, sum
Sub modulKode()
    ActiveWorkbook.Sheets(1).Activate
   
    rækFør = 2
    rækEfter = 1
   
    With Worksheet
        overførUændret 1, rækEfter                        'overskrifter
       
        For Ræk = 2 To 65000
            If Cells(Ræk, 1) <> "" Then
                If Ræk = 2 Then                            '1. detail-række
                    nyeBrudFelter Ræk
                    flagJ = False
                End If

                If Cells(Ræk, 9) = "N" And flagJ = False Then
                    overførUændret Ræk, rækEfter
                    flagJ = False
                Else
                    If flagJ = False Then
                        nyeBrudFelter Ræk
                        flagJ = True
                    Else
Rem brud på kontonr - eller måned
                        If Cells(Ræk, 2) <> ktoNr Or Month(Cells(Ræk, 3)) <> md Then
                            overførSum rækEfter
                            nyeBrudFelter Ræk
                           
Rem hvis aktuelle=N - så overførmed det samme
                            If flagJ = True And Cells(Ræk, 9) = "N" Then
                                overførUændret Ræk, rækEfter
                                flagJ = False
                            End If
                        Else
Rem hvis ikke brud - så optælling
                            If Cells(Ræk, 7) <> "" Then
                                debet = debet + Cells(Ræk, 7)
                            End If
                           
                            If Cells(Ræk, 8) <> "" Then
                                kredit = kredit + Cells(Ræk, 8)
                            End If
                        End If
                    End If
                End If
            End If
        Next Ræk

Rem Overfør evt. sidste række
        If flagJ = True Then
            overførSum rækEfter
        End If
    End With
   
    Columns.AutoFit
    MsgBox ("modulKode afsluttet")
End Sub
Private Sub nyeBrudFelter(Ræk)
    debet = 0
    kredit = 0
   
    With ActiveWorkbook.Sheets(1)
        ktoGrp = .Cells(Ræk, 1)
        ktoNr = .Cells(Ræk, 2)
        bDato = .Cells(Ræk, 3)
        md = Month(bDato)
        bNr = .Cells(Ræk, 4)
        delRgn = .Cells(Ræk, 5)
        beskriv = .Cells(Ræk, 6)
       
        If .Cells(Ræk, 7) <> "" Then
            debet = .Cells(Ræk, 7)
        End If
       
        If .Cells(Ræk, 8) <> "" Then
            kredit = .Cells(Ræk, 8)
        End If
       
        sum = .Cells(Ræk, 9)
    End With
End Sub
Private Sub overførUændret(fRæk, tRæk)
    With ActiveWorkbook.Sheets(2)
        For k = 1 To 9
            .Cells(tRæk, k) = Cells(fRæk, k)
        Next k
        .Cells(tRæk, 3).NumberFormat = "m/d/yyyy"
       
        If .Cells(tRæk, 7) <> "" Then
            .Cells(tRæk, 7).NumberFormat = "#,##0.00"
        End If
       
        If .Cells(tRæk, 8) <> "" Then
            .Cells(tRæk, 8).NumberFormat = "#,##0.00"
        End If
    End With
   
    rækEfter = rækEfter + 1
End Sub
Private Sub overførSum(Ræk)
    With ActiveWorkbook.Sheets(2)
        .Cells(Ræk, 1) = ktoGrp
        .Cells(Ræk, 2) = ktoNr
Rem bilagsdato
        .Cells(Ræk, 3) = bDato
        .Cells(Ræk, 3).NumberFormat = "mm/yyyy"
Rem bilagsnr
        .Cells(Ræk, 4) = ""
        .Cells(Ræk, 5) = delRgn
Rem beskrivelse
        .Cells(Ræk, 6) = "SUM FRA NAVISION"
        .Cells(Ræk, 7) = debet
        .Cells(Ræk, 7).NumberFormat = "#,##0.00"

        .Cells(Ræk, 8) = kredit
        .Cells(Ræk, 8).NumberFormat = "#,##0.00"
       
        .Cells(Ræk, 9) = sum
    End With
    rækEfter = rækEfter + 1
End Sub
Avatar billede jensen363 Forsker
14. marts 2007 - 11:00 #7
Super god og professionel løsning ...
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
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

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