Avatar billede masuda Juniormester
18. september 2019 - 10:41 Der er 7 kommentarer

Filtrering ved valg i rulleliste

Jeg har et excelark, som ikke-Excel vante brugere skal kunne benytte til registrering af fravær.

Kolonne A: navne med deltagere i teamet (alle navne går igen - en gang pr måned)
Kolonne C periode (januar - december)
Ovenover tabellen har jeg lavet en rulleliste, hvor de kan vælge den måned de skal registrere for.
Kan jeg få tabellen til kun at vise den måned de har valgt, så skal de nemlig ikke bruge filterknapperne.
Pft.
Avatar billede kim1a Ekspert
18. september 2019 - 12:30 #1
Du kan lave en vba som starter når der ændres i rullemenuen.

Den kan så alt efter struktur i arket skjule rækker eller kolonner.
Avatar billede masuda Juniormester
18. september 2019 - 13:55 #2
Tak for svar.
Men argh.. kan det kun løses ved en VBA? Det har jeg aldrig arbejdet med.
Har du kendskab til en nogenlunde lettilgængelig "how to"?
Avatar billede Jan K Ekspert
18. september 2019 - 14:47 #3
Hvis du har lavet din dropdown med Datavalidering fra en liste, kan du tilføje punktet "Vis alle" (uden anførselstegn) til listen.

Så kan du lægge denne kode i arkets kodemodul (højreklik på arkfanen og vælg Vis programkode)

Private Sub Worksheet_Change(ByVal Target As Range)
    Application.ScreenUpdating = False
    If Target.Value = "Vis alle" Then
        ActiveSheet.UsedRange.Rows.EntireRow.Hidden = False
        Exit Sub
    End If
    mnd = Target.Value
    For Each r In ActiveSheet.Rows("2:1000")
          If Cells(r.Row, 3) <> mnd Then
              r.EntireRow.Hidden = True
        Else
              r.EntireRow.Hidden = False
        End If
    Next r
    Application.ScreenUpdating = True
End Sub

Det kan laves mere elegant, men dette var "quick and dirty.
Avatar billede xl-Enthusiast Ekspert
18. september 2019 - 19:59 #4
Hvis du foretrækker en formelløsning så upload venligst en fil til Dropbox med en passende mængde eksempeldata.
Avatar billede store-morten Ekspert
19. september 2019 - 18:33 #5
Makro kunne se sådan ud:
Private Sub Worksheet_Change(ByVal Target As Range)
'Rulleliste i celle B1
If Not Intersect(Target, Range("B1")) Is Nothing Then

    'Hvis Rullelist er "tom" nulstilles filter i Tabel 1
    If Target = "" Then
    ActiveSheet.ListObjects("Tabel1").Range.AutoFilter Field:=2
    Exit Sub
    End If
   
'Filter sættes i Tabel 1 efter valg i rulleliste
ActiveSheet.ListObjects("Tabel1").Range.AutoFilter Field:=2, Criteria1:=Target
End If
End Sub
Avatar billede store-morten Ekspert
19. september 2019 - 18:43 #6
"How to do"

Kopier koden i boksen.
I Excel, højre klik på arket og vælg: Vis programkode.
Ctrl + V (Indsæt koden).
Luk på det røde kryds.

Makroen køres derefter ved ændring i celle B1
Og din Tabel skal hedde 1 (Ellers skal koden rettes til)
Avatar billede store-morten Ekspert
19. september 2019 - 18:44 #7
Husk at gemme med aktive makroer.
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

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