Avatar billede kcdk Juniormester
04. januar 2012 - 08:28 Der er 3 kommentarer

Danne graf ud fra udtræk fra SQL

Hejsa

Jeg har et udtræk fra en SQL database

I kolonne E har jeg gruppenumre. Det kan f.eks. være 900, 60, 70 osv. Det samme gruppenummer kan sagtens optræde flere gange. Udtrækket opdaterer sig selv hver time og derfor bliver udtrækket større og større.

I kolonne D har jeg kr. Den følger grupperne, så der kan stå i D: 300 og så i E: 900 og sådan fortsætter det så ned af. Denne opdaterer også og bliver større og større i rækker.

Så kommer spørgsmålet. Jeg vil gerne lave en diagram som viser hver gruppe og hvor mange kroner der er til det.

Så:
Funktionen skal tage alle rækker og lægge tallene sammen hvor gruppenummer er identisk. Denne har jeg så brug for at der så laver to kolonner:

Eks.
Kr            Gruppenummer
2135          900
25            60
785          70

osv. Det er vigtigt at bygge kolonner er dynamiske, så hvis der kommer nye grupper til at den selv "putter" dem på listen.

På forhånd tak.
Avatar billede Ialocin Novice
05. januar 2012 - 12:36 #1
Hej kcdk

I hvilke kolonner kunne du tænke dig at placere de opsummerede gruppenumre + kroner ?

Og hvordan vil du opdatere opsummeringen - kunne en knap være en mulighed ??


Med venlig hilsen, Nicolai
Avatar billede Ialocin Novice
05. januar 2012 - 12:45 #2
Hej kcdk

Jeg har et testark, som jeg gerne poster til dig, hvis ?

Med venlig hilsen, Nicolai
Avatar billede Ialocin Novice
05. januar 2012 - 13:13 #3
Hej Igen igen :o)

Hermed min VBA procedure, som fungerer i Excel 2003.
Der opsummeres på kolonne E (gruppenummer)
Opsummeringen skrives til kolonne A og B pr. gruppenummer

-----------------

Sub SumOp()
Dim wb As Workbook
Dim ws As Worksheet
Dim eSidsteRække As Integer
Dim aSidsteRække As Integer
Dim aCell As Range
Dim eCell As Range
Dim sum As Double
Dim t As Boolean
Dim g As Integer


Application.ScreenUpdating = False


    '** klargør objekter og variabler **
   
    'sæt wb = denne workbook
    Set wb = ThisWorkbook
   
    'sæt ws = arket med navnet "Sheet1"
    Set ws = wb.Worksheets("Sheet1")
     
    'sidste række i kolonne E
    eSidsteRække = ws.Range("E65536").End(xlUp).Row
   
    'sidste række i kolonne A
    aSidsteRække = ws.Range("A65536").End(xlUp).Row

   
    'tøm det opsummerede område i kolonne A og B, så der ikke overskrives ved opdatering!
    ws.Range("A1:B" & aSidsteRække).Clear
   
   
            '** Gennemløb af kolonne E og A


            'løb ned gennem hver celle i kolonne E
            For Each eCell In ws.Range("E1:E" & eSidsteRække)
           
                'tøm sum
                sum = 0
                               
                'sæt sum = værdien til venstre for den aktive celle i kolonne E
                sum = eCell.Offset(0, -1).Value
             
             
             
                        '** søg gruppenummeret i kolonne A **
             
             
                        'første gang der skrives et gruppenummer
                        If ws.Range("A1").Value = "" Then
                       
                            'sæt gruppenummer = værdien fra den aktive celle i kolonne E
                            ws.Range("A1").Value = eCell.Value
                           
                           
                            'sæt gruppenummerets tilhørende værdi fra kolonne F
                            ws.Range("A1").Offset(0, 1).Value = sum
               
               
                            'sæt ny sidste række i kolonne A
                            aSidsteRække = ws.Range("A65536").End(xlUp).Row
                           
                           
                           
                        'hvis det ikke er første gang der skrives et gruppenummer
                        Else
                               
                               
             
                            'løb ned gennem hver celle i kolonne A til sidste celle med en værdi
                            For Each aCell In ws.Range("A1:A" & aSidsteRække)
                           
                                                       
                                        'hvis den aktive celle i kolonne A er = den aktive celle i kolonne E
                                        If aCell.Value = eCell.Value Then
                                                                                       
                                            'gruppenummer eksisterer allerede i kolonne A
                                            t = True
                                           
                                            'sæt g = rækkenummeret for den aktive celle i kolonne A
                                            g = aCell.Row
                                                                                 
                                        End If
                                       
                                       
                                       
                            'næste celle i kolonne A
                            Next aCell
             
             
             
             
                                    '** efter gennemløb af hver celle i kolonne A **
                                   
                                   
                                    'hvis t = true, så er gruppenummeret allerede oprettet i kolonne A
                                    If t = True Then
                                   
                                        'opsummer eksisterende værdi for det aktuelle gruppenummer
                                        ws.Range("A" & g).Offset(0, 1).Value = ws.Range("A" & g).Offset(0, 1).Value + sum
                                       
                                        'sæt t = False
                                        t = False
                                       
                                       
                                    'hvis gruppenummeret IKKE allerede er oprettet i kolonne A
                                    Else
                                                                       
                                   
                                        'sæt gruppenummeret i cellen under sidste celle med værdi i kolonne A
                                        ws.Range("A" & aSidsteRække + 1).Value = eCell.Value
                                       
                                        'sæt gruppenummerets tilhørende værdi fra kolonne B
                                        ws.Range("A" & aSidsteRække + 1).Offset(0, 1).Value = ws.Range("A" & aSidsteRække + 1).Offset(0, 1).Value + sum
                               
                               
                                        'ny sidste række i kolonne A
                                        aSidsteRække = ws.Range("A65536").End(xlUp).Row
                                   
                                    End If
                           
                   
                        End If
             
             
            'næste celle i kolonne E
            Next eCell




Application.ScreenUpdating = True

End Sub



Med venlig hilsen, Nicolai
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