littlepete
Active Member
- Joined
- Mar 26, 2015
- Messages
- 489
- Office Version
- 365
- Platform
- Windows
hello all 
i succeeded in building a vba to filter my long list, so that :
when i select : 1.5.3 it will show me : 1. / 1.5 / and 1.5.3
when i select : 147.33.5.9.2 it will show : 147 / 147.33 / 147.33.5 / 147.33.5.9 / 147.33.5.9.2
how it works:
the division string (147.35.2.3. ...) is column A.
each level (147 and 35 and 2 and 3 and ...) are in columns L to Y.
the cells in those columns that are empty are filled with "0".
i use a help column to mark the selected rows : column AB.
good luck
this is the code :
i succeeded in building a vba to filter my long list, so that :
when i select : 1.5.3 it will show me : 1. / 1.5 / and 1.5.3
when i select : 147.33.5.9.2 it will show : 147 / 147.33 / 147.33.5 / 147.33.5.9 / 147.33.5.9.2
how it works:
the division string (147.35.2.3. ...) is column A.
each level (147 and 35 and 2 and 3 and ...) are in columns L to Y.
the cells in those columns that are empty are filled with "0".
i use a help column to mark the selected rows : column AB.
good luck
this is the code :
Code:
Sub talenlijst() ' - met markering
Application.ScreenUpdating = False
' markeernix
Dim ditniv1, ditniv2, ditniv3, ditniv4, ditniv5, ditniv6, ditniv7, ditniv8, ditniv9, ditniv10 As Variant
Dim ditniv11, ditniv12, ditniv13 As Variant
Dim aantalnivos As Integer, dezind As String, dezcel As String
ActiveSheet.Range("rnggeg").AutoFilter Field:=3
dezind = Range("A" & (ActiveCell.Row)).Value
aantalnivos = Len(dezind) - Len(WorksheetFunction.Substitute(dezind, ".", ""))
MsgBox "talenlijst aantal niveaus is " & aantalnivos
dezcel = Range("A" & (ActiveCell.Row)).Value
' If aantalnivos = 1 Then GoTo einde
' ---------------------------------------------------------------------------------------
ditniv1 = Range("L" & (ActiveCell.Row)).Value
Selection.AutoFilter Field:=Range("rnggeg").Cells(2, 12).Column, _
Criteria1:=ditniv1, Operator:=xlAnd
Selection.AutoFilter Field:=Range("rnggeg").Cells(2, 13).Column, _
Criteria1:="0"
markeer
filteruit
MsgBox "aantalnivos: " & aantalnivos & " - ditniv1: {" & ditniv1 & "}"
If aantalnivos = 2 Then GoTo einde
' ---------------------------------------------------------------------------------------
Range("A" & (ActiveCell.Row)).Select
ditniv2 = Range("M" & (ActiveCell.Row)).Value
Selection.AutoFilter Field:=Range("rnggeg").Cells(2, 12).Column, _
Criteria1:=ditniv1, Operator:=xlAnd
Selection.AutoFilter Field:=Range("rnggeg").Cells(2, 13).Column, _
Criteria1:=ditniv2, Operator:=xlAnd
Selection.AutoFilter Field:=Range("rnggeg").Cells(2, 14).Column, _
Criteria1:="0"
markeer
filteruit
MsgBox "aantalnivos: " & aantalnivos & " - ditniv2: {" & ditniv2 & "}"
If aantalnivos = 3 Then GoTo einde
' ---------------------------------------------------------------------------------------
Range("A" & (ActiveCell.Row)).Select
ditniv3 = Range("N" & (ActiveCell.Row)).Value
Selection.AutoFilter Field:=Range("rnggeg").Cells(2, 12).Column, _
Criteria1:=ditniv1, Operator:=xlAnd
Selection.AutoFilter Field:=Range("rnggeg").Cells(2, 13).Column, _
Criteria1:=ditniv2, Operator:=xlAnd
Selection.AutoFilter Field:=Range("rnggeg").Cells(2, 14).Column, _
Criteria1:=ditniv3, Operator:=xlAnd
Selection.AutoFilter Field:=Range("rnggeg").Cells(2, 15).Column, _
Criteria1:="0"
markeer
filteruit
MsgBox "aantalnivos: " & aantalnivos & " - ditniv3: {" & ditniv3 & "}"
If aantalnivos = 4 Then GoTo einde
' ---------------------------------------------------------------------------------------
Range("A" & (ActiveCell.Row)).Select
ditniv4 = Range("O" & (ActiveCell.Row)).Value
Selection.AutoFilter Field:=Range("rnggeg").Cells(2, 12).Column, _
Criteria1:=ditniv1, Operator:=xlAnd
Selection.AutoFilter Field:=Range("rnggeg").Cells(2, 13).Column, _
Criteria1:=ditniv2, Operator:=xlAnd
Selection.AutoFilter Field:=Range("rnggeg").Cells(2, 14).Column, _
Criteria1:=ditniv3, Operator:=xlAnd
Selection.AutoFilter Field:=Range("rnggeg").Cells(2, 15).Column, _
Criteria1:=ditniv4, Operator:=xlAnd
Selection.AutoFilter Field:=Range("rnggeg").Cells(2, 16).Column, _
Criteria1:="0"
markeer
filteruit
MsgBox "aantalnivos: " & aantalnivos & " - ditniv4: {" & ditniv4 & "}"
If aantalnivos = 5 Then GoTo einde
' ---------------------------------------------------------------------------------------
Range("A" & (ActiveCell.Row)).Select
ditniv5 = Range("P" & (ActiveCell.Row)).Value
Selection.AutoFilter Field:=Range("rnggeg").Cells(2, 12).Column, _
Criteria1:=ditniv1, Operator:=xlAnd
Selection.AutoFilter Field:=Range("rnggeg").Cells(2, 13).Column, _
Criteria1:=ditniv2, Operator:=xlAnd
Selection.AutoFilter Field:=Range("rnggeg").Cells(2, 14).Column, _
Criteria1:=ditniv3, Operator:=xlAnd
Selection.AutoFilter Field:=Range("rnggeg").Cells(2, 15).Column, _
Criteria1:=ditniv4, Operator:=xlAnd
Selection.AutoFilter Field:=Range("rnggeg").Cells(2, 16).Column, _
Criteria1:=ditniv5, Operator:=xlAnd
Selection.AutoFilter Field:=Range("rnggeg").Cells(2, 17).Column, _
Criteria1:="0"
markeer
filteruit
MsgBox "aantalnivos: " & aantalnivos & " - ditniv5: {" & ditniv5 & "}"
If aantalnivos = 6 Then GoTo einde
toonselectie
' ----------------------------------------------------------------------------------------------------------------------
Range("A" & (ActiveCell.Row)).Select
ditniv6 = Range("Q" & (ActiveCell.Row)).Value
Selection.AutoFilter Field:=Range("rnggeg").Cells(2, 12).Column, _
Criteria1:=ditniv1, Operator:=xlAnd
Selection.AutoFilter Field:=Range("rnggeg").Cells(2, 13).Column, _
Criteria1:=ditniv2, Operator:=xlAnd
Selection.AutoFilter Field:=Range("rnggeg").Cells(2, 14).Column, _
Criteria1:=ditniv3, Operator:=xlAnd
Selection.AutoFilter Field:=Range("rnggeg").Cells(2, 15).Column, _
Criteria1:=ditniv4, Operator:=xlAnd
Selection.AutoFilter Field:=Range("rnggeg").Cells(2, 16).Column, _
Criteria1:=ditniv5, Operator:=xlAnd
Selection.AutoFilter Field:=Range("rnggeg").Cells(2, 17).Column, _
Criteria1:=ditniv6, Operator:=xlAnd
Selection.AutoFilter Field:=Range("rnggeg").Cells(2, 18).Column, _
Criteria1:="0"
markeer
filteruit
If aantalnivos = 7 Then GoTo einde
' ---------------------------------------------------------------------------------------
Range("A" & (ActiveCell.Row)).Select
ditniv7 = Range("R" & (ActiveCell.Row)).Value
Selection.AutoFilter Field:=Range("rnggeg").Cells(2, 12).Column, _
Criteria1:=ditniv1, Operator:=xlAnd
Selection.AutoFilter Field:=Range("rnggeg").Cells(2, 13).Column, _
Criteria1:=ditniv2, Operator:=xlAnd
Selection.AutoFilter Field:=Range("rnggeg").Cells(2, 14).Column, _
Criteria1:=ditniv3, Operator:=xlAnd
Selection.AutoFilter Field:=Range("rnggeg").Cells(2, 15).Column, _
Criteria1:=ditniv4, Operator:=xlAnd
Selection.AutoFilter Field:=Range("rnggeg").Cells(2, 16).Column, _
Criteria1:=ditniv5, Operator:=xlAnd
Selection.AutoFilter Field:=Range("rnggeg").Cells(2, 17).Column, _
Criteria1:=ditniv6, Operator:=xlAnd
Selection.AutoFilter Field:=Range("rnggeg").Cells(2, 18).Column, _
Criteria1:=ditniv7, Operator:=xlAnd
Selection.AutoFilter Field:=Range("rnggeg").Cells(2, 19).Column, _
Criteria1:="0"
markeer
filteruit
If aantalnivos = 8 Then GoTo einde
' ---------------------------------------------------------------------------------------
Range("A" & (ActiveCell.Row)).Select
ditniv8 = Range("S" & (ActiveCell.Row)).Value
Selection.AutoFilter Field:=Range("rnggeg").Cells(2, 12).Column, _
Criteria1:=ditniv1, Operator:=xlAnd
Selection.AutoFilter Field:=Range("rnggeg").Cells(2, 13).Column, _
Criteria1:=ditniv2, Operator:=xlAnd
Selection.AutoFilter Field:=Range("rnggeg").Cells(2, 14).Column, _
Criteria1:=ditniv3, Operator:=xlAnd
Selection.AutoFilter Field:=Range("rnggeg").Cells(2, 15).Column, _
Criteria1:=ditniv4, Operator:=xlAnd
Selection.AutoFilter Field:=Range("rnggeg").Cells(2, 16).Column, _
Criteria1:=ditniv5, Operator:=xlAnd
Selection.AutoFilter Field:=Range("rnggeg").Cells(2, 17).Column, _
Criteria1:=ditniv6, Operator:=xlAnd
Selection.AutoFilter Field:=Range("rnggeg").Cells(2, 18).Column, _
Criteria1:=ditniv7, Operator:=xlAnd
Selection.AutoFilter Field:=Range("rnggeg").Cells(2, 19).Column, _
Criteria1:=ditniv8, Operator:=xlAnd
Selection.AutoFilter Field:=Range("rnggeg").Cells(2, 20).Column, _
Criteria1:="0"
markeer
filteruit
If aantalnivos = 9 Then GoTo einde
' ---------------------------------------------------------------------------------------
Range("A" & (ActiveCell.Row)).Select
ditniv9 = Range("T" & (ActiveCell.Row)).Value
Selection.AutoFilter Field:=Range("rnggeg").Cells(2, 12).Column, _
Criteria1:=ditniv1, Operator:=xlAnd
Selection.AutoFilter Field:=Range("rnggeg").Cells(2, 13).Column, _
Criteria1:=ditniv2, Operator:=xlAnd
Selection.AutoFilter Field:=Range("rnggeg").Cells(2, 14).Column, _
Criteria1:=ditniv3, Operator:=xlAnd
Selection.AutoFilter Field:=Range("rnggeg").Cells(2, 15).Column, _
Criteria1:=ditniv4, Operator:=xlAnd
Selection.AutoFilter Field:=Range("rnggeg").Cells(2, 16).Column, _
Criteria1:=ditniv5, Operator:=xlAnd
Selection.AutoFilter Field:=Range("rnggeg").Cells(2, 17).Column, _
Criteria1:=ditniv6, Operator:=xlAnd
Selection.AutoFilter Field:=Range("rnggeg").Cells(2, 18).Column, _
Criteria1:=ditniv7, Operator:=xlAnd
Selection.AutoFilter Field:=Range("rnggeg").Cells(2, 19).Column, _
Criteria1:=ditniv8, Operator:=xlAnd
Selection.AutoFilter Field:=Range("rnggeg").Cells(2, 20).Column, _
Criteria1:=ditniv9, Operator:=xlAnd
Selection.AutoFilter Field:=Range("rnggeg").Cells(2, 21).Column, _
Criteria1:="0"
markeer
filteruit
If aantalnivos = 10 Then GoTo einde
' ---------------------------------------------------------------------------------------
Range("A" & (ActiveCell.Row)).Select
ditniv10 = Range("U" & (ActiveCell.Row)).Value
Selection.AutoFilter Field:=Range("rnggeg").Cells(2, 12).Column, _
Criteria1:=ditniv1, Operator:=xlAnd
Selection.AutoFilter Field:=Range("rnggeg").Cells(2, 13).Column, _
Criteria1:=ditniv2, Operator:=xlAnd
Selection.AutoFilter Field:=Range("rnggeg").Cells(2, 14).Column, _
Criteria1:=ditniv3, Operator:=xlAnd
Selection.AutoFilter Field:=Range("rnggeg").Cells(2, 15).Column, _
Criteria1:=ditniv4, Operator:=xlAnd
Selection.AutoFilter Field:=Range("rnggeg").Cells(2, 16).Column, _
Criteria1:=ditniv5, Operator:=xlAnd
Selection.AutoFilter Field:=Range("rnggeg").Cells(2, 17).Column, _
Criteria1:=ditniv6, Operator:=xlAnd
Selection.AutoFilter Field:=Range("rnggeg").Cells(2, 18).Column, _
Criteria1:=ditniv7, Operator:=xlAnd
Selection.AutoFilter Field:=Range("rnggeg").Cells(2, 19).Column, _
Criteria1:=ditniv8, Operator:=xlAnd
Selection.AutoFilter Field:=Range("rnggeg").Cells(2, 20).Column, _
Criteria1:=ditniv9, Operator:=xlAnd
Selection.AutoFilter Field:=Range("rnggeg").Cells(2, 21).Column, _
Criteria1:=ditniv10, Operator:=xlAnd
Selection.AutoFilter Field:=Range("rnggeg").Cells(2, 22).Column, _
Criteria1:="0"
markeer
filteruit
If aantalnivos = 11 Then GoTo einde
' ---------------------------------------------------------------------------------------
Range("A" & (ActiveCell.Row)).Select
ditniv11 = Range("v" & (ActiveCell.Row)).Value
Selection.AutoFilter Field:=Range("rnggeg").Cells(2, 12).Column, _
Criteria1:=ditniv1, Operator:=xlAnd
Selection.AutoFilter Field:=Range("rnggeg").Cells(2, 13).Column, _
Criteria1:=ditniv2, Operator:=xlAnd
Selection.AutoFilter Field:=Range("rnggeg").Cells(2, 14).Column, _
Criteria1:=ditniv3, Operator:=xlAnd
Selection.AutoFilter Field:=Range("rnggeg").Cells(2, 15).Column, _
Criteria1:=ditniv4, Operator:=xlAnd
Selection.AutoFilter Field:=Range("rnggeg").Cells(2, 16).Column, _
Criteria1:=ditniv5, Operator:=xlAnd
Selection.AutoFilter Field:=Range("rnggeg").Cells(2, 17).Column, _
Criteria1:=ditniv6, Operator:=xlAnd
Selection.AutoFilter Field:=Range("rnggeg").Cells(2, 18).Column, _
Criteria1:=ditniv7, Operator:=xlAnd
Selection.AutoFilter Field:=Range("rnggeg").Cells(2, 19).Column, _
Criteria1:=ditniv8, Operator:=xlAnd
Selection.AutoFilter Field:=Range("rnggeg").Cells(2, 20).Column, _
Criteria1:=ditniv9, Operator:=xlAnd
Selection.AutoFilter Field:=Range("rnggeg").Cells(2, 21).Column, _
Criteria1:=ditniv10, Operator:=xlAnd
Selection.AutoFilter Field:=Range("rnggeg").Cells(2, 22).Column, _
Criteria1:=ditniv11, Operator:=xlAnd
Selection.AutoFilter Field:=Range("rnggeg").Cells(2, 23).Column, _
Criteria1:="0"
markeer
filteruit
If aantalnivos = 12 Then GoTo einde
' ---------------------------------------------------------------------------------------
Range("A" & (ActiveCell.Row)).Select
ditniv12 = Range("w" & (ActiveCell.Row)).Value
Selection.AutoFilter Field:=Range("rnggeg").Cells(2, 12).Column, _
Criteria1:=ditniv1, Operator:=xlAnd
Selection.AutoFilter Field:=Range("rnggeg").Cells(2, 13).Column, _
Criteria1:=ditniv2, Operator:=xlAnd
Selection.AutoFilter Field:=Range("rnggeg").Cells(2, 14).Column, _
Criteria1:=ditniv3, Operator:=xlAnd
Selection.AutoFilter Field:=Range("rnggeg").Cells(2, 15).Column, _
Criteria1:=ditniv4, Operator:=xlAnd
Selection.AutoFilter Field:=Range("rnggeg").Cells(2, 16).Column, _
Criteria1:=ditniv5, Operator:=xlAnd
Selection.AutoFilter Field:=Range("rnggeg").Cells(2, 17).Column, _
Criteria1:=ditniv6, Operator:=xlAnd
Selection.AutoFilter Field:=Range("rnggeg").Cells(2, 18).Column, _
Criteria1:=ditniv7, Operator:=xlAnd
Selection.AutoFilter Field:=Range("rnggeg").Cells(2, 19).Column, _
Criteria1:=ditniv8, Operator:=xlAnd
Selection.AutoFilter Field:=Range("rnggeg").Cells(2, 20).Column, _
Criteria1:=ditniv9, Operator:=xlAnd
Selection.AutoFilter Field:=Range("rnggeg").Cells(2, 21).Column, _
Criteria1:=ditniv10, Operator:=xlAnd
Selection.AutoFilter Field:=Range("rnggeg").Cells(2, 22).Column, _
Criteria1:=ditniv11, Operator:=xlAnd
Selection.AutoFilter Field:=Range("rnggeg").Cells(2, 23).Column, _
Criteria1:=ditniv12, Operator:=xlAnd
Selection.AutoFilter Field:=Range("rnggeg").Cells(2, 24).Column, _
Criteria1:="0"
markeer
filteruit
If aantalnivos = 13 Then GoTo einde
' ---------------------------------------------------------------------------------------
Range("A" & (ActiveCell.Row)).Select
ditniv13 = Range("x" & (ActiveCell.Row)).Value
Selection.AutoFilter Field:=Range("rnggeg").Cells(2, 12).Column, _
Criteria1:=ditniv1, Operator:=xlAnd
Selection.AutoFilter Field:=Range("rnggeg").Cells(2, 13).Column, _
Criteria1:=ditniv2, Operator:=xlAnd
Selection.AutoFilter Field:=Range("rnggeg").Cells(2, 14).Column, _
Criteria1:=ditniv3, Operator:=xlAnd
Selection.AutoFilter Field:=Range("rnggeg").Cells(2, 15).Column, _
Criteria1:=ditniv4, Operator:=xlAnd
Selection.AutoFilter Field:=Range("rnggeg").Cells(2, 16).Column, _
Criteria1:=ditniv5, Operator:=xlAnd
Selection.AutoFilter Field:=Range("rnggeg").Cells(2, 17).Column, _
Criteria1:=ditniv6, Operator:=xlAnd
Selection.AutoFilter Field:=Range("rnggeg").Cells(2, 18).Column, _
Criteria1:=ditniv7, Operator:=xlAnd
Selection.AutoFilter Field:=Range("rnggeg").Cells(2, 19).Column, _
Criteria1:=ditniv8, Operator:=xlAnd
Selection.AutoFilter Field:=Range("rnggeg").Cells(2, 20).Column, _
Criteria1:=ditniv9, Operator:=xlAnd
Selection.AutoFilter Field:=Range("rnggeg").Cells(2, 21).Column, _
Criteria1:=ditniv10, Operator:=xlAnd
Selection.AutoFilter Field:=Range("rnggeg").Cells(2, 22).Column, _
Criteria1:=ditniv11, Operator:=xlAnd
Selection.AutoFilter Field:=Range("rnggeg").Cells(2, 23).Column, _
Criteria1:=ditniv12, Operator:=xlAnd
Selection.AutoFilter Field:=Range("rnggeg").Cells(2, 24).Column, _
Criteria1:=ditniv13, Operator:=xlAnd
Selection.AutoFilter Field:=Range("rnggeg").Cells(2, 25).Column, _
Criteria1:="0"
markeer
filteruit
' ---------------------------------------------------------------------------------------
einde:
Application.ScreenUpdating = True
toonselectie
End Sub