Avatar billede Simonlausen Nybegynder
09. februar 2009 - 22:59 Der er 11 kommentarer og
1 løsning

Sortering af oplysninger i excel

Jeg leder efter en smart måde, at opgøre fraværet for 135 elever.
Fraværslisterne ser ud som i eksemplet - bare meget længere selvfølgelig. Men hvordan kan jeg finde ud af, hvor meget fravær eksempelvis Anders Andersen har? (I dette tilfælde 4 moduler).

Jeg har prøvet med en betinget formatering, og det fungerer fint, hvis det drejer sig om 5-6 elever, men ved 135 elever, som den skal genkende, bliver det en frygtelig lang kode...

Eksempel:
Anders Andersen    1. modul // 2. modul
Bent Broholm      1. modul // 3. modul
Anders Andersen    2. modul // 3. modul
Christian Carlsen  2. modul // 3. modul
Bent Broholm      2. modul // 4. modul
Osv...

Håber I kan hjælpe mig...
Avatar billede Skardhamar Nybegynder
09. februar 2009 - 23:13 #1
Kan du ikke tælle antal felter ud fra eleverne der er opfyldt?

Ellers prøv lige at uploade et eksempel på arket, det er lidt lettere.
Avatar billede Simonlausen Nybegynder
10. februar 2009 - 00:09 #2
Den skal tælle antallet af moduler, dvs. ordet "modul" i 4. kolonne. Ofte drejer det sig om flere moduler. Derudover skal den også sortere efter lovligt, ulovligt eller sygdom, hvilket er angivet i 3. kolonne. Alt dette skal sammentælles under de enkelte elever - i alt 135...

Eksempel:
http://www.wydojnik.com/ex.xls

Jeg vil i eksemplet gerne vide, hvor meget fravær Anders Andersen har, fordelt på lovligt, ulovligt og sygdom. Og det samme vil jeg også gerne vide om de resterende 134 elever... Og uden at det bliver en uoverskuelig lang hvis-sætning...
Avatar billede be_nice Juniormester
10. februar 2009 - 05:37 #3
Har du overvejet at benytte en pivottabel - den kunne se ud som følger (2007 eks.):
Rækkeetiketter: Elev og Kategori
Kolonneetiketter: Bemærkninger
Værdier: Antal af bemærkninger
/Be_Nice
Avatar billede supertekst Ekspert
10. februar 2009 - 09:42 #4
Har du overvejet at få konstrueret en VBA-løsning?
Avatar billede Simonlausen Nybegynder
10. februar 2009 - 14:22 #5
Det ville nok være det smarteste, men kan desværre ikke finde ud af VBA... Så håbede bare, eller håber stadigvæk, at der findes en løsning inde i Excel...
Avatar billede supertekst Ekspert
10. februar 2009 - 14:33 #6
Ok - men det er der jo andre der kan :-)
Avatar billede Simonlausen Nybegynder
10. februar 2009 - 14:44 #7
Du skal være meget velkommen til at prøve :-)
Avatar billede supertekst Ekspert
11. februar 2009 - 14:21 #8
Rem Version 1 / 11-02-2009
Rem Koden indsættes Ark1
Rem Hele filen kan tilsendes -
Rem mail til: pb (a) supertekst-it . dk
Rem ===================================
Dim ark2 As Worksheet
Private Sub opdaterFravær()
    Application.ScreenUpdating = False
   
Rem beregnantal rækker på ark1
    antalrækker = ActiveCell.SpecialCells(xlLastCell).Row
   
Rem initier ark2
    Set ark2 = ActiveWorkbook.Sheets("Ark2")
   
Rem gennemlæs ark1 - test om elev er oprettet på ark2
    For ræk = 2 To antalrækker
        elevnavn = Cells(ræk, 2)
        elevrække = findesElevNavn(elevnavn)
       
Rem find & opdater kategori
        opdaterKategori Cells(ræk, 3), elevrække
    Next ræk

Rem tilpas kolonne-bredde
    ark2.Columns.AutoFit
   
    ark2.Activate
   
    Application.ScreenUpdating = True
End Sub
Private Function findesElevNavn(elevnavn)
    With ark2
        For r = 2 To 1000
            If .Cells(r, 1) = elevnavn Then
                findesElevNavn = r
                Exit Function
            Else
                If .Cells(r, 1) = "" Then
                    .Cells(r, 1) = elevnavn
                    findesElevNavn = r
                    Exit Function
                End If
            End If
        Next r
    End With
End Function
Private Sub opdaterKategori(Kategori, række)
Rem find kolonne for kategori
    With ark2
        For kol = 2 To 100
            If LCase(.Cells(1, kol)) = LCase(Kategori) Then
                .Cells(række, kol) = .Cells(række, kol) + 1
                Exit Sub
            Else
                If .Cells(1, kol) = "" Then
                    Exit For
                End If
            End If
        Next kol

Rem kategori blev ikke fundet - indsæt denne
        .Cells(1, kol) = Kategori
        .Cells(række, kol) = .Cells(række, kol) + 1
    End With
End Sub
Private Sub CommandButton1_Click()
    opdaterFravær
End Sub
Avatar billede Simonlausen Nybegynder
18. februar 2009 - 21:26 #9
Tak for jeres svar.

Jeg har prøvet at rodde lidt med VBA, men uden held. Men Jeg fandt imidlertid løsningen ved første bestemme forekomsten af ordet "modul" udfra elevens navn ved formlen: =(LÆNGDE(D2)-LÆNGDE(UDSKIFT(D2;"modul";"")))/5, og derefter oprette en pivottabel, som arrangerede disse værdier udfra hver elev.
Avatar billede Simonlausen Nybegynder
18. februar 2009 - 21:29 #10
Tak for svaret. Det var lige den løsning, som jeg manglede...
Avatar billede supertekst Ekspert
19. februar 2009 - 09:12 #11
Hvis jeg skal have points - så er her et svar.

PS: SVAR anvendes ikke af opgavestilleren - men af "bidrags-yderne"
Avatar billede Simonlausen Nybegynder
19. februar 2009 - 18:25 #12
Ja, det har jeg efterhånden fundet ud af... :-)
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
Vi har et stort udvalg af Excel kurser. Find lige det kursus der passer dig lige her.

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