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 = 1
zeilen1 = 5
Rem von bis
spalten0 = 1
spalten1 = 5
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
' Eingabe wurde gelöscht
If raZelle = "" Then
' Autofilter für das betreffende Fald zurücksetzen
.AutoFilter Field:=raZelle.Column + 1 - ActiveSheet.AutoFilter.Range(1).Column
' in die betreffende Zelle eintragen
raZelle = "Suchbegriff eingeben"
Else
' Suchkriterium ist eine Zahl
If IsNumeric(raZelle) Then
If raZelle.Column = 5 Then '<== für Spalte E
' Zellen sind benutzerdefiniert formatiert
.AutoFilter Field:=raZelle.Column + 1 - ActiveSheet.AutoFilter.Range(1).Column, _
Criteria1:="=" & Format(raZelle, "000")
Else
' Zellen sind als Standard formatiert
.AutoFilter Field:=raZelle.Column + 1 - ActiveSheet.AutoFilter.Range(1).Column, _
Criteria1:="=" & raZelle
End If
' Suchkriterium ist ein Datum
ElseIf IsDate(raZelle) Then
' Autofilter für das betreffende Feld setzen
' es werden 2 Kriterien verwendet, weil mit Kriterium "=" das Datum nicht gefiltert wird
.AutoFilter Field:=raZelle.Column + 1 - ActiveSheet.AutoFilter.Range(1).Column, _
Criteria1:=">=" & raZelle.Value2, Criteria2:="<=" & raZelle.Value2
Else
' Autofilter für das betreffende Feld setzen, Filterkriterium "Enthält"
.AutoFilter Field:=raZelle.Column + 1 - ActiveSheet.AutoFilter.Range(1).Column, _
Criteria1:="=*" & raZelle & "*"
End If
End If
Passwortgeschützte Excel 2007-Datei in Excel 2003 öffnen
Kara09 05.06.2009 - 793 Hits - 2 Antworten
Dropdown Auswahlliste in Excel 2003
Ralfman 30.06.2009 - 555 Hits - 2 Antworten
Sortieren mit Excel 2003
wolf951 17.02.2010 - 154 Hits - 3 Antworten
Excel 2003
Diiter 02.03.2010 - 276 Hits - 8 Antworten
Excel 2003 Währungsformat 0,00 und 0.00
StilleQuelle 12.03.2010 - 395 Hits - 6 Antworten