Supportnet / Forum / Tabellenkalkulation
Filtern?
Frage
Hallo,
habe folgendes Problem,
ausgefiltert werden sollen alle Zeilen, bei denen in der Spalte "DRG" 4 Zeichen stehen, von denen das letzte ein Buchstabe ist.
also Struktur: (Buchstabe,Ziffer,Ziffer,Buchstabe)
Hat jemand ein Idee bzw. Tip
Danke
Antwort 1 von want2cu
Hallo,
eine Komplettlösung auf die Schnelle nicht, aber einen Tipp.
Mit der Funktion LINKS müßtest du das 4. Zeichen ermitteln können. Mit ISTTEXT kannst du prüfen, ob es sich um einen Buchstaben handelt. Wenn du dazu noch genaueres brauchst, könntest du mit CHAR arbeiten.
Dann das ganze in eine Hilfsspalte und dann mit dem Autofilter nach dieser Hilfsspalte filtern.
CU
want2cu
eine Komplettlösung auf die Schnelle nicht, aber einen Tipp.
Mit der Funktion LINKS müßtest du das 4. Zeichen ermitteln können. Mit ISTTEXT kannst du prüfen, ob es sich um einen Buchstaben handelt. Wenn du dazu noch genaueres brauchst, könntest du mit CHAR arbeiten.
Dann das ganze in eine Hilfsspalte und dann mit dem Autofilter nach dieser Hilfsspalte filtern.
CU
want2cu
Antwort 2 von nighty
hi enibas :)
wie gewuenscht ,filter in wechselwirkung,spalten anzupassen bzw. posten.
gruss nighty
wie gewuenscht ,filter in wechselwirkung,spalten anzupassen bzw. posten.
gruss nighty
Sub makro01()
Dim zaehler, zaehler1
With Worksheets("Tabelle1")
Set LastCell = ActiveSheet.Cells.SpecialCells(xlLastCell)
alta = LastCell.Row
a = LastCell.Row
Do While Application.CountA(Rows(a)) = 0 And a <> 1
a = a - 1
Loop
alta = a
lzeile = alta
If Rows(1 & ":" & 200).EntireRow.Hidden = True Then
Rows(1 & ":" & 200).EntireRow.Hidden = False
End
Else
Rows(1 & ":" & lzeile).EntireRow.Hidden = False
End If
For t1 = 1 To lzeile
zaehler1 = Len(Cells(t1, 1))
If zaehler1 = 4 Then
If Asc(Mid$(Cells(t1, 1), 1, 1)) > 96 And Asc(Mid$(Cells(t1, 1), 1, 1)) < 123 _
Or Asc(Mid$(Cells(t1, 1), 1, 1)) > 64 And Asc(Mid$(Cells(t1, 1), 1, 1)) < 91 Then zaehler = zaehler + 1
If Asc(Mid$(Cells(t1, 1), 4, 1)) > 96 And Asc(Mid$(Cells(t1, 1), 4, 1)) < 123 _
Or Asc(Mid$(Cells(t1, 1), 4, 1)) > 64 And Asc(Mid$(Cells(t1, 1), 4, 1)) < 91 Then zaehler = zaehler + 1
If Asc(Mid$(Cells(t1, 1), 2, 1)) > 47 And Asc(Mid$(Cells(t1, 1), 2, 1)) < 58 Then zaehler = zaehler + 1
If Asc(Mid$(Cells(t1, 1), 3, 1)) > 47 And Asc(Mid$(Cells(t1, 1), 3, 1)) < 58 Then zaehler = zaehler + 1
If zaehler <> 4 Then Rows(t1 & ":" & t1).EntireRow.Hidden = True
Else
Rows(t1 & ":" & t1).EntireRow.Hidden = True
End If
zaehler = 0
zaehler1 = 0
Next t1
End With
End SubAntwort 3 von nighty
hi alle :)
wie gewuenscht :)
gruss nighty
es wird zur zeit das tabellen ende automatisch ermittelt ,von spalte a werden alle zellen abgetastet auf 4 zeichen die da sind wie gefordert
1 zeichen a-z bzw. A-Z bzw. A-z bzw. a-Z
2 zeichen zahl
3 zeichen zahl
4 zeichen a-z bzw. A-Z bzw. A-z bzw. a-Z
erste makrostart wird gefiltert und wenn nun nochmals gestartet wird und eine filterung noch vorhanden ist wird wieder ungefiltert dargestellt.
wie gewuenscht :)
gruss nighty
es wird zur zeit das tabellen ende automatisch ermittelt ,von spalte a werden alle zellen abgetastet auf 4 zeichen die da sind wie gefordert
1 zeichen a-z bzw. A-Z bzw. A-z bzw. a-Z
2 zeichen zahl
3 zeichen zahl
4 zeichen a-z bzw. A-Z bzw. A-z bzw. a-Z
erste makrostart wird gefiltert und wenn nun nochmals gestartet wird und eine filterung noch vorhanden ist wird wieder ungefiltert dargestellt.
Antwort 4 von nighty
hi enibas :)
ein wenig optimiert und besser anpassbar :)
gruss nighty
ein wenig optimiert und besser anpassbar :)
gruss nighty
Sub makro01()
Dim zaehler As Integer
Dim zaehler1 As Integer
Dim zaehler2
Dim spalte As Integer
Dim lzeile
rem gegebenefalls tabellennamen aendern
With Worksheets("Tabelle1")
lzeile = .UsedRange.SpecialCells(xlCellTypeLastCell).Row + 1
rem hier deine spalte(notfalls abzaehlen)
spalte = 1
If Rows(1 & ":" & lzeile).EntireRow.Hidden = True Then
Rows(1 & ":" & lzeile).EntireRow.Hidden = False
End
Else
Rows(1 & ":" & lzeile).EntireRow.Hidden = False
End If
For zaehler2 = 1 To lzeile
zaehler1 = Len(Cells(zaehler2, spalte))
If zaehler1 = 4 Then
If Asc(Mid$(Cells(zaehler2, spalte), 1, 1)) > 96 And Asc(Mid$(Cells(zaehler2, spalte), 1, 1)) < 123 _
Or Asc(Mid$(Cells(zaehler2, spalte), 1, 1)) > 64 And Asc(Mid$(Cells(zaehler2, spalte), 1, 1)) < 91 Then zaehler = zaehler + 1
If Asc(Mid$(Cells(zaehler2, spalte), 4, 1)) > 96 And Asc(Mid$(Cells(zaehler2, spalte), 4, 1)) < 123 _
Or Asc(Mid$(Cells(zaehler2, spalte), 4, 1)) > 64 And Asc(Mid$(Cells(zaehler2, spalte), 4, 1)) < 91 Then zaehler = zaehler + 1
If Asc(Mid$(Cells(zaehler2, spalte), 2, 1)) > 47 And Asc(Mid$(Cells(zaehler2, spalte), 2, 1)) < 58 Then zaehler = zaehler + 1
If Asc(Mid$(Cells(zaehler2, spalte), 3, 1)) > 47 And Asc(Mid$(Cells(zaehler2, spalte), 3, 1)) < 58 Then zaehler = zaehler + 1
If zaehler <> 4 Then Rows(zaehler2 & ":" & zaehler2).EntireRow.Hidden = True
Else
Rows(zaehler2 & ":" & zaehler2).EntireRow.Hidden = True
End If
zaehler = 0
zaehler1 = 0
Next zaehler2
End With
End Sub
Antwort 5 von Aliba
Hi,
von mir nur eine Lösung mit Hilfsspalte, abgefragt wird:
Länge des Strings: 4
Mitte muss Zahl sein, Anfang und Ende keine Zahl:
=UND(ISTFEHLER(LINKS(A1;1)*1);ISTFEHLER(RECHTS(A1;1)*1);ISTZAHL(TEIL(A1;2;2)*1);LÄNGE(A1)=4)
ergibt WAHR für keine Ziffer-Ziffer-Ziffer-keine Ziffer.
Hilfsspalte nach WAHR filtern.
CU ALiba
von mir nur eine Lösung mit Hilfsspalte, abgefragt wird:
Länge des Strings: 4
Mitte muss Zahl sein, Anfang und Ende keine Zahl:
=UND(ISTFEHLER(LINKS(A1;1)*1);ISTFEHLER(RECHTS(A1;1)*1);ISTZAHL(TEIL(A1;2;2)*1);LÄNGE(A1)=4)
ergibt WAHR für keine Ziffer-Ziffer-Ziffer-keine Ziffer.
Hilfsspalte nach WAHR filtern.
CU ALiba

