[excel] uitgebreide filters maken

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • himlims_
  • Registratie: Juni 2000
  • Niet online

himlims_

🐧 Linux HOoligan

Topicstarter
Voorbeeld:
code:
1
2
3
4
       merka    merkb   merkc   
typea   10  15  11  12
typeb   20  25  21  22
typec   30  35  31  32


Zo zijn er 10 tabbladen.

Nu is het wenselijk dat er een soort 'configuratie' tabblad komt, waarin de gebruiker kan aangeven welke merken en type wel/niet getoond moeten worden. Nu weet ik dat 't via de standaard filters vrij eenvoudig kan, echter zullen de meeste eindgebruikers 0.0 kennis hebben van excel.

Het leek mij logisch om dit via die 'objecten' te doen (keuze vakjes + button)
maar hoe kan ik dat goed op zetten. Afhankelijk van de geselecteerde keuze vakjes, moet een filter geactiveerd worden op een ander tabblad. Vergelijkbaar aan de standaard functie die reeds in excel beschikbaar is.

//edit
code:
1
2
3
4
5
    Sheets("honda").Select
    Columns("P:P").Select  <-- kolom bevat het merk
    Selection.EntireColumn.Hidden = False
    Columns("Q:Q").Select <-- kolom bevat het merk
    Selection.EntireColumn.Hidden = False


^- daarmee kan ik nu bepaalde merken aan/uit zetten (2 knoppen; eentje is aan, andere is uit)

Voor de types moet ik dat anders oplossen.
code:
1
2
3
4
'
    Sheets("Honda").Select
    ActiveSheet.Range("$A$1:$AO$96").AutoFilter Field:=6, Criteria1:=Array( _
        "Bridgestone", "Continental", "Dunlop"), Operator:=xlFilterValues

De getoonde merken moet ik nu nog kunnen bepalen/kiezen.
leek mij 'logisch' om daarvoor een kolom te makne met alle merken; br,conti,dunlop etc. met daarlangs de waarde waar/onwaar (om zo aan te geven of dat merk wel/niet getoond moet worden) afhankelijk van de keuze moet het merk opgenomen worden in de bovenstaande code.

hoe doe ik dat?

[ Voor 52% gewijzigd door himlims_ op 21-06-2010 15:08 ]

⭐Game Profiles: 🕹️Steam - 🎮PSN - 🇪🇦 GoT_Hollandhards


Acties:
  • 0 Henk 'm!

Verwijderd

draaitabel?
de gegevens van alle tabbladen kun dan bovendien in 1 overzicht getoond worden.

Acties:
  • 0 Henk 'm!

  • himlims_
  • Registratie: Juni 2000
  • Niet online

himlims_

🐧 Linux HOoligan

Topicstarter
Draai tabel is geen optie, daarvoor is het document veel te complex (ik heb een zwaaar getrimde versie ingesloten in dit bericht)

Visual Basic:
1
2
3
4
5
6
7
8
9
Sub FilterTabel()
  With Sheets("menu")
    .Columns("I:L").ClearContents                          '4 kolommen wissen om zeker te zijn van currentregion
    .Range("B2").CurrentRegion.AdvancedFilter xlFilterCopy, .Range("H1:H2"), .Range("J1"), True  'kopieer alle 1's (tonen) naar kolommen J:K
  End With
  With Sheets("Honda")
    .Range("F4:O96").AdvancedFilter xlFilterInPlace, Sheets("Menu").Range("J1").CurrentRegion.Columns(1).SpecialCells(xlConstants), Unique:=False
  End With
End Sub


Die code controleerd eerst in sheet menu welke merken een 1/0 hebben.
Die lijst wordt gekopieerd naar kolom J
Afhankelijk daarvan wordt op sheet honda een filter toegepast.

Ik heb in sheet MENU een kolom gemaakt met naam en tonen;
code:
1
2
3
4
5
6
7
8
naam    tonen
BF Goodrich 0
Bridgestone 1
Continental 0
Cooper       0
Debica       0
Dunlop       1
Firestone        0
via de 1 en 0 wordt aangegeven of een merk wel/niet getoond moet worden.

De functie is operationeel in het test/dummy bestand. Ik heb de vb code overgenomen en aangepast zodat deze matched met mijn werk sheet. Maar 't lukt niet :'( - ik snap d'r werkelijk geen snars meer van


Werkende dummy: hier

Doel bestand: hier

*update*
Visual Basic:
1
2
3
4
5
6
7
8
9
Sub FilterTabel()
  With Sheets("menu")
    .Columns("I:L").ClearContents                          '4 kolommen wissen om zeker te zijn van currentregion
    .Range("B2").CurrentRegion.AdvancedFilter xlFilterCopy, .Range("H1:H2"), .Range("J1"), True  'kopieer alle 1's (tonen) naar kolommen J:K
  End With
  With Sheets("cijfertjes")
    .Range("A6:D66").AdvancedFilter xlFilterInPlace, Sheets("Menu").Range("J1").CurrentRegion.Columns(1).SpecialCells(xlConstants), Unique:=False
  End With
End Sub


en toevoeging 'naam' in F1 bleek essentieel :X

[ Voor 29% gewijzigd door himlims_ op 23-06-2010 12:24 ]

⭐Game Profiles: 🕹️Steam - 🎮PSN - 🇪🇦 GoT_Hollandhards