SOLVED. trapped filtering to get 1 and 1.3 and 1.3.5 from row with 1.3.5.

littlepete

Active Member
Joined
Mar 26, 2015
Messages
489
Office Version
  1. 365
Platform
  1. 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 :

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
 

Excel Facts

Can a formula spear through sheets?
Use =SUM(January:December!E7) to sum E7 on all of the sheets from January through December

Forum statistics

Threads
1,203,046
Messages
6,053,192
Members
444,644
Latest member
keepontruckinc4

We've detected that you are using an adblocker.

We have a great community of people providing Excel help here, but the hosting costs are enormous. You can help keep this site running by allowing ads on MrExcel.com.
Allow Ads at MrExcel

Which adblocker are you using?

Disable AdBlock

Follow these easy steps to disable AdBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the icon in the browser’s toolbar.
2)Click on the "Pause on this site" option.
Go back

Disable AdBlock Plus

Follow these easy steps to disable AdBlock Plus

1)Click on the icon in the browser’s toolbar.
2)Click on the toggle to disable it for "mrexcel.com".
Go back

Disable uBlock Origin

Follow these easy steps to disable uBlock Origin

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back

Disable uBlock

Follow these easy steps to disable uBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back
Back
Top