Avatar billede christopherkragh Nybegynder
23. august 2010 - 12:45 Der er 2 kommentarer

Excel

Hej alle,

Jeg er stødt på et problem i forbindelse med en Excel opgave. Jeg har fået stillet til opgave at fremstille nogle diagrammer ud fra en masse data. 2000 observationer, for at være helt præcis.
Jeg skal vise ændringer i bestyrelser og direktionsposter i Danmark. Dette skal gøres i diagrammer, og der skal tages højde for 4 variabler ad gangen. En dato (eks decenber 2009), geografisk område(eks københavn), Branchekode (eks 401230) og ancinnitet (Altså hvor længe et vedkommende har siddet på en post. Eks 24 måneder)
Jeg kunne godt tænke mig at lave et diagram, hvori der er mulighed for at ændre på disse variable (eks: vise ændringerne inden for branche 401230, I firmaer på Sjælland, i November 2009).
Hvordan får man excel til at tage højde for disse 4 variable? Det skal meget gerne være sådan så man kan vælge kriterierne i et rullepanel el. lign.

På forhånd tak, og skriv endelig hvis der er brug for en fordybning!

Med venlig hilsen
Christopher
Avatar billede supertekst Ekspert
23. august 2010 - 13:08 #1
Hvordan er data organiseret? I givetfald er du velkommen til at sende filen eller uddrag heraf - @-adresse under min profil.
Avatar billede supertekst Ekspert
26. august 2010 - 13:03 #2
Rem Version 2
Rem =========

Const førsteRæk = 4

Dim beregnArk As Worksheet
Dim antalRæk As Long
Rem ======== USERFORM-OBJEKTER ANVENDES ========
Private Sub CommandButton1_Click()
Rem Test om alle kriterier er valgt
    If Me.ListBox1.ListIndex <> -1 And _
        Me.ListBox2.ListIndex <> -1 And _
            Me.ListBox3.ListIndex <> -1 Then
                sætKriterierBeregningsark
               
                rydGlTal
                udførSøgning
               
                beregnArk.Activate
                Unload UserForm1
    Else
        MsgBox "Alle kriterier er ikke valgt", vbOKOnly
    End If
End Sub
Rem ======== OPSTART AF USERFORM ========
Private Sub UserForm_activate()
    antalRæk = findAntalRækker
    Set beregnArk = ActiveWorkbook.Sheets("Beregningsark")
   
Rem opbyg Kriterie-lister
    bygListeDato
   
    bygListePostnr
    Module1.sortering "Listbox2"
   
    bygListebranchekode
    Module1.sortering "Listbox3"
   
End Sub
Private Function findAntalRækker()
    findAntalRækker = ActiveCell.SpecialCells(xlLastCell).Row
End Function
Private Sub bygListeDato()
    bygliste "A", "ListBox1"
End Sub
Private Sub bygListePostnr()
    bygliste "C", "Listbox2"
End Sub
Private Sub bygListebranchekode()
    bygliste "D", "ListBox3"
    bygliste "E", "ListBox3"
    bygliste "F", "ListBox3"
End Sub
Private Sub bygliste(Kol, listenavn)
Dim ræk As Long, cc As Object, værdi As Variant
    Set cc = UserForm1.Controls(listenavn)
   
    For ræk = førsteRæk To antalRæk
        værdi = CStr(Range(Kol & ræk))
        If værdi <> "" Then
            If findesVærdi(værdi, cc) = False Then
                cc.AddItem værdi
            End If
        End If
    Next ræk
End Sub
Private Function findesVærdi(værdi, listeControl)
Dim ix As Long
    For ix = 0 To listeControl.ListCount - 1
        If listeControl.List(ix) = CStr(værdi) Then
            findesVærdi = True
            Exit Function
        End If
    Next ix
    findesVærdi = False
End Function
Rem ======== USERFORM-OK ER AKTIVERET ========
Private Sub sætKriterierBeregningsark()
    With beregnArk
        .Range("A2") = Me.ListBox1
        .Range("B2") = Me.ListBox2
        .Range("C2") = Me.ListBox3
    End With
End Sub
Private Sub rydGlTal()
    With beregnArk
        .Range("B4:B7").ClearContents
        .Range("F4:F9").ClearContents
    End With
End Sub
Private Sub udførSøgning()
Dim ræk As Long
    For ræk = førsteRæk To antalRæk
        If CStr(Range("A" & ræk)) = Me.ListBox1 And _
            CStr(Range("C" & ræk)) = Me.ListBox2 And _
                CStr(Range("D" & ræk)) = Me.ListBox3 Or _
                    CStr(Range("E" & ræk)) = Me.ListBox3 Or _
                        CStr(Range("F" & ræk)) = Me.ListBox3 Then
                            optælMatch ræk
        End If
    Next ræk
End Sub
Private Sub optælMatch(ræk)
Rem optæl til bestyrelsesændring
    optælling "H", "K", ræk, "B", 4
   
Rem optæl til anciennitet
    optælling "M", "R", ræk, "F", 4
End Sub
Private Sub optælling(fraKol, tilKol, fraRæk, Kol, Ræk1)
Dim cc, count As Byte, ræk As Long
    ræk = Ræk1
    For Each cc In Range(fraKol & fraRæk & ":" & tilKol & fraRæk).Cells
        If cc.Value <> "" Then
            With beregnArk
                .Range(Kol & ræk).Value = .Range(Kol & ræk).Value + cc.Value
            End With
        End If
        ræk = ræk + 1
    Next
End Sub
Rem
Rem ======== BUBBLE-SORT ========
Rem
Dim antal As Long, cc As Object
Dim vektor(), ix As Long, j As Long, byt
Public Sub sortering(listenavn)
    Set cc = UserForm1.Controls(listenavn)

    antal = cc.ListCount
   
    ReDim vektor(antal)

Rem sæt værdier i vektor
    For ix = 1 To antal
        vektor(ix) = cc.List(ix - 1)
    Next ix
   
Rem udfør sortering
    For ix = antal - 1 To 1 Step -1
        For j = 1 To ix
            If vektor(j) > vektor(j + 1) Then
                byt = vektor(j)
                vektor(j) = vektor(j + 1)
                vektor(j + 1) = byt
            End If
        Next j
    Next ix
   
Rem flyt tilbage i liste
    cc.Clear
   
    For ix = 1 To antal
        cc.AddItem vektor(ix)
    Next ix
   
    Set cc = Nothing
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
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