online 1
gast (50)

/ Forum / Tabellenkalkulation

TabellenkalkulationTabellenkalkulation

Fragevon inselgerd vom 12.06.2019, 19:58 Options

Zeilen und Spalten filtern

Hallo an alle Excel-Freaks

Ich habe hier im Supportnet ein Makro gefunden, mit dem ich Spalten und Zeilen filtern kann.
Um das Makro für meine Dateien zu gebrauchen, müssten noch Änderungen gemacht werden.
1. Wie müßte das unten stehende Makro aussehen, wenn einerseits die Spalte A oder andererseits die Zeile 1 micht mitgefiltert werden soll.
2. Kann man mehrere verschiedene Daten gleichzeitig filtern? Z.B. Nägel und Schrauben!

Vielen Dank schon mal
inselgerd

Sub Spaltenfilter()
Option Explicit
Sub makro01()
Application.EnableEvents = False
Dim LastCell
Dim spaltende, zeilende
Dim zaehler1, zaehler2, zaehler3, wert01
If Range("A1:IV1").EntireColumn.Hidden = True Then
Range("A1:IV1").EntireColumn.Hidden = False
End
End If
Range("A1:IV1").EntireColumn.Hidden = False
wert01 = InputBox("Kreterium")
If wert01 = "" Then End
Set LastCell = ActiveSheet.Cells.SpecialCells(xlLastCell)
spaltende = LastCell.Column
zeilende = LastCell.Row
For zaehler1 = 1 To spaltende
For zaehler2 = 1 To zeilende
If Cells(zaehler2, zaehler1) = wert01 Then
zaehler3 = 1
zaehler2 = zeilende
End If
Next zaehler2
If zaehler3 = 0 Then
Cells(1, zaehler1).EntireColumn.Hidden = True
End If
zaehler3 = 0
Next zaehler1
Application.EnableEvents = True
End Sub

  • *Threadedit*
    Admininfo: Bitte beachte FAQ 2 für deine nächste Anfrage, und reiche in dieser Anfrage ergänzende Angaben nach.


  • Antwort schreiben

    Antwort 1 von nighty vom 13.06.2019, 10:02 Options

    hi gerd :-)

    wie gewuenscht fuer die spalten

    gruss nighty

    spaltenfilter in wechselwirkung
    mehrere kreterien angebbar ,durch leerzeichen getrennt

    z.b.
    1 kreterium
    Schraube

    2 kreterien
    schraube holz

    3 kreterien
    schraube holz putz

    usw.

    Option Explicit
    Sub makro01()
    Application.EnableEvents = False
    Dim spaltende As Integer
    Dim zaehler1 As Integer
    Dim zaehler2 As Integer
    Dim zaehler3 As Integer
    Dim spalten As Integer
    Dim EinGabe As String
    ReDim sammel(1) As String
    ReDim zaehler4(spalten) As Boolean
    spalten = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Column
    With ActiveSheet
    If .Range("B1:IV1").EntireColumn.Hidden = True Then
    .Range("B1:IV1").EntireColumn.Hidden = False
    End
    End If
    EinGabe = InputBox("Eingabe des Monats")
    zaehler2 = 1
    For zaehler1 = 1 To Len(EinGabe)
    If Mid(EinGabe, zaehler1, 1) <> " " Then
    sammel(zaehler2) = sammel(zaehler2) + Mid(EinGabe, zaehler1, 1)
    Else
    zaehler2 = zaehler2 + 1
    ReDim Preserve sammel(zaehler2)
    End If
    Next zaehler1
    .Range("B1:IV1").EntireColumn.Hidden = False
    For zaehler1 = 2 To spalten
    For zaehler3 = 1 To zaehler2
    If UCase(Cells(1, zaehler1)) <> UCase(sammel(zaehler3)) And zaehler4(zaehler1) = 0 Then
    .Cells(1, zaehler1).EntireColumn.Hidden = True
    Else
    .Cells(1, zaehler1).EntireColumn.Hidden = False
    zaehler4(zaehler1) = 1
    End If
    Next zaehler3
    Next zaehler1
    End With
    Application.EnableEvents = True
    End Sub

    Antwort 2 von nighty vom 13.06.2019, 10:05 Options

    hi gerd :-)

    ups korrigiert :-))

    gruss nighty

    Option Explicit
    Sub makro01()
    Application.EnableEvents = False
    Dim spaltende As Integer
    Dim zaehler1 As Integer
    Dim zaehler2 As Integer
    Dim zaehler3 As Integer
    Dim spalten As Integer
    Dim EinGabe As String
    ReDim sammel(1) As String
    spalten = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Column
    ReDim zaehler4(spalten) As Boolean
    With ActiveSheet
    If .Range("B1:IV1").EntireColumn.Hidden = True Then
    .Range("B1:IV1").EntireColumn.Hidden = False
    End
    End If
    EinGabe = InputBox("Eingabe des Monats")
    zaehler2 = 1
    For zaehler1 = 1 To Len(EinGabe)
    If Mid(EinGabe, zaehler1, 1) <> " " Then
    sammel(zaehler2) = sammel(zaehler2) + Mid(EinGabe, zaehler1, 1)
    Else
    zaehler2 = zaehler2 + 1
    ReDim Preserve sammel(zaehler2)
    End If
    Next zaehler1
    .Range("B1:IV1").EntireColumn.Hidden = False
    For zaehler1 = 2 To spalten
    For zaehler3 = 1 To zaehler2
    If UCase(Cells(1, zaehler1)) <> UCase(sammel(zaehler3)) And zaehler4(zaehler1) = 0 Then
    .Cells(1, zaehler1).EntireColumn.Hidden = True
    Else
    .Cells(1, zaehler1).EntireColumn.Hidden = False
    zaehler4(zaehler1) = 1
    End If
    Next zaehler3
    Next zaehler1
    End With
    Application.EnableEvents = True
    End Sub

    Antwort 3 von nighty vom 13.06.2019, 10:49 Options

    hi all :-)

    war noch immer ein fehler drin ,das einblenden geht nur spaltenweise nicht in einem rutsch :-)

    gruss nighty

    jetzt muesste aber :-))

    Sub makro01()
    Application.EnableEvents = False
    Dim spaltende As Integer
    Dim zaehler1 As Integer
    Dim zaehler2 As Integer
    Dim zaehler3 As Integer
    Dim zaehler5 As Integer
    Dim spalten As Integer
    Dim EinGabe As String
    ReDim sammel(1) As String
    spalten = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Column
    ReDim zaehler4(spalten) As Boolean
    With ActiveSheet
    For zaehler1 = 1 To 255
    If .Cells(1, zaehler1).EntireColumn.Hidden = True Then
    .Cells(1, zaehler1).EntireColumn.Hidden = False
    zaehler5 = 1
    End If
    Next zaehler1
    If zaehler5 = 1 Then End
    EinGabe = InputBox("Eingabe des Monats")
    zaehler2 = 1
    For zaehler1 = 1 To Len(EinGabe)
    If Mid(EinGabe, zaehler1, 1) <> " " Then
    sammel(zaehler2) = sammel(zaehler2) + Mid(EinGabe, zaehler1, 1)
    Else
    zaehler2 = zaehler2 + 1
    ReDim Preserve sammel(zaehler2)
    End If
    Next zaehler1
    For zaehler1 = 2 To spalten
    For zaehler3 = 1 To zaehler2
    If UCase(Cells(1, zaehler1)) <> UCase(sammel(zaehler3)) And zaehler4(zaehler1) = 0 Then
    .Cells(1, zaehler1).EntireColumn.Hidden = True
    Else
    .Cells(1, zaehler1).EntireColumn.Hidden = False
    zaehler4(zaehler1) = 1
    End If
    Next zaehler3
    Next zaehler1
    End With
    Application.EnableEvents = True
    End Sub

    Antwort 4 von inselgerd vom 13.06.2019, 19:26 Options

    Hallo nighty
    Vielen Dank für deine Hilfe.
    Ich kann leider mit den Daten in einem Makro nichts anfangen. Das sind für mich Bömische Wälder.

    Zur Erklärung meiner Exceltabelle:

    In der Spalte C4 - C~ stehen Namen. In den Spalten ab D4 - D~ stehen Daten, z.B. Apfel, in Spalte E4 - E~ stehen Birnen, in Spalte F4 - F~ stehen Melonen usw.

    Nun kann es sein, dass die Person in C4 den Eintrag in D4 Apfel stehen hat, die Person in C5 hat keine weiteren Eintragungen in der entsprechenden Zeile. Die Person in C6 hat aber in D6 Apfel und in F6 Melone stehen.
    Nun meine Idee: Die Spalten A - C und die Zeilen 1 - 3 sollen vom filtern ausgenommen werden.
    Wenn ich jetzt alle Personen, die in dihrer Zeile ein Apfel stehen haben angezeigt haben will, sollen die anderen Zeilen und Spalten ausgeblendet werden.
    Außerdem kann es sein, dass ich z.B. Apfel und Melone filtern möchte. Geht das und wie muß ich das eingeben.

    Ich weiß. dass es eine chaotische Tabelle ist und wenn du noch Informationen brauchst, das kriege ich hin.


    Vielen Dank für dein Bemühen
    inselgerd

    Antwort 5 von nighty vom 13.06.2019, 20:22 Options

    hi gerd :-)

    schick eine mustertabelle mit beispiel an
    oberley@t-online.de

    mit aussagefaehigen betreff bitte :-))

    gruss nighty

    Antwort 6 von nighty vom 20.06.2019, 16:18 Options

    hi all :-)

    und noch fuer die datenbank :-)

    ein spalten verbundener zeilen filter

    eingabe erlaubt soviele begriffe getrennt durch ein leerzeichen wie eine inputbox aufnehmen kann

    gruss nighty

    Option Explicit
    Sub Filter()
    Call EventsOff
    Dim EinGabe As String
    ReDim sammel(1) As String
    Dim zeilen0 As Integer, zeilen1 As Long, zaehler1 As Integer, zaehler2 As Integer, zaehler3 As Integer, zaehler4 As Integer, zaehler6 As Integer
    Dim spalten0 As Integer, spalten1 As Integer
    Rem hier deinen filterbereich festlegen
    Rem von bis
    zeilen0 = 4
    zeilen1 = 20
    Rem von bis
    spalten0 = 4
    spalten1 = 9
    With ActiveSheet
    For zaehler1 = zeilen0 To zeilen1
    .Rows(zaehler1 & ":" & zaehler1).EntireRow.Hidden = False
    Next zaehler1
    For zaehler1 = spalten0 To spalten1
    .Cells(1, zaehler1).EntireColumn.Hidden = False
    Next zaehler1
    EinGabe = InputBox("Eingabe des Obstes")
    If EinGabe = "" Then End
    zaehler4 = 1
    For zaehler1 = 1 To Len(EinGabe)
    If Mid(EinGabe, zaehler1, 1) <> " " Then
    sammel(zaehler4) = sammel(zaehler4) + Mid(EinGabe, zaehler1, 1)
    Else
    zaehler4 = zaehler4 + 1
    ReDim Preserve sammel(zaehler4)
    End If
    Next zaehler1
    For zaehler1 = zeilen0 To zeilen1
    For zaehler2 = spalten0 To spalten1
    For zaehler3 = 1 To zaehler4
    If UCase(Cells(zaehler1, zaehler2)) = UCase(sammel(zaehler3)) Then
    zaehler6 = zaehler6 + 1
    End If
    Next zaehler3
    Next zaehler2
    If zaehler6 = 0 Then
    .Rows(zaehler1 & ":" & zaehler1).EntireRow.Hidden = True
    Else
    zaehler6 = 0
    End If
    Next zaehler1
    zaehler6 = 0
    For zaehler1 = spalten0 To spalten1
    For zaehler2 = zeilen0 To zeilen1
    For zaehler3 = 1 To zaehler4
    If UCase(Cells(zaehler2, zaehler1)) = UCase(sammel(zaehler3)) Then
    zaehler6 = zaehler6 + 1
    End If
    Next zaehler3
    Next zaehler2
    If zaehler6 = 0 Then
    .Cells(1, zaehler1).EntireColumn.Hidden = True
    Else
    zaehler6 = 0
    End If
    Next zaehler1
    End With
    Call EventsOn
    End Sub
    Public Sub EventsOn()
    With Application
    .ScreenUpdating = True
    .EnableEvents = True
    .Calculation = xlCalculationAutomatic
    End With
    End Sub
    Public Sub EventsOff()
    With Application
    .ScreenUpdating = False
    .EnableEvents = False
    .Calculation = xlCalculationManual
    End With
    End Sub

    Ähnliche Themen

    Feste Zeilen/Spalten in Excel
    Sebot  05.01.2007 - 305 Hits - 1 Antwort

    Filterfunktionen
    werksstudent  29.03.2007 - 124 Hits - 1 Antwort

    excel numerische spalten
    smd  23.04.2007 - 167 Hits - 1 Antwort

    Kriteren Zeilen und Spalten Tauschen (Tabelle drehen 90°)
    OliverB  29.06.2007 - 220 Hits - 2 Antworten

    Tabelle vergleichen und aktualisiren
    Dojackson  22.08.2007 - 70 Hits - 1 Antwort

    Hinweis

    Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

    Neue Einträge

    Version: supportware 1.9.150 / 10.06.2022, Startzeit:Thu Jan 8 21:07:44 2026