Hallo Excelfreunde,
ich habe eine Tabelle, die in Spalte-b und Spalte-c Text und Zahlen enthält.
Nun möchte ich in Zelle F1 einen String z.B. 87 ein.
Nach Beendigung der Eingabe sollen nun nur die Zeilen angezeigt bleiben, die diesen
String an irgendeiner Stelle beinhalten.
Über eine Hilfsspalte kann ich Zeilen mit text einblenden, aber keine zahlen:
=WENN(such=„“;„“;ZÄHLENWENN($B3:blush:C3;„*“&$F$1&„*“))
Sub finde()
Application.ScreenUpdating = False
If Range(„such“).Value = 0 Then
Rows(„3:100“).Hidden = False
Else
Dim a!, b!, c!, d%
'b = Erste Zeile mit Formel
'c = letzte zu prüfende Zeile
'd = Spalte, in der die Zellen auf „“ überprüft werden sollen
b = 3
c = 100
d = 7
For a = b To c
If Cells(a, d).Value = 0 Then Rows(a).EntireRow.Hidden = True
Next
End If
End If
Application.ScreenUpdating = True
End Sub
Kann das jemand erklären, oder eine einfachere Lösung präsentieren?
Danke im Voraus
Falls ich es richtig verstanden habe:
Wenn Du die Eingabe-Zellen als „Text“ formatierst, sind auch Zahlen keine Zahlen mehr, sondern Text.
Falls ich es doch falsch verstanden habe, wäre eine kleine Beispiel-Datei mit drei, vier Eingaben hilfreich.
Hallo Dieter,
Über eine Hilfsspalte kann ich Zeilen mit text einblenden,
aber keine zahlen:
=WENN(such=„“;„“;ZÄHLENWENN($B3:blush:C3;„*“&$F$1&„*“))
ja, das klappt nur bei Text. B:C (nachträglich) als Text formatieren bringt dir nix. VOR der Eingabe als Text formatiert würde Zählenwenn auch *Zahl* erkennen.
Mein Tipp wäre spontan, du nimmst eine Hilfsspalte mit
=Text(B3&C3;„@“)
und das bis runter zu Zeile 100 kopieren. Deine Zählenwenn-Funktion beziehst du dann auf diese Hilfsspalte.
Gruß
Reinhard
VBA-Lösung
Hallo Dieter,
wenn du eine VBA-Lösung möchtest, kopiere den folgenden Code in den Codebereich des Tabellenblatts:
Private Sub Worksheet\_Change(ByVal Target As Range)
Dim ze As Long
If Target.Address "$F$1" Then Exit Sub
If IsEmpty(Target) Then
Range("A3:A100").Rows.Hidden = False
Else
Application.ScreenUpdating = False
For ze = 3 To 100
Rows(ze).Hidden = (InStr(Cells(ze, 2), Target) + InStr(Cells(ze, 3), Target) = 0)
Next ze
Application.ScreenUpdating = True
End If
End Sub
Gruß, Andreas
Die VBA-Funktion macht volgendes:
in den Variablen a b c d werden die Parameter gespeichert (sieh Beschreibung der ersten drei Zeilen)
in der for next Schleife wird Zeile für Zeile der Inhalt der Spalte 7 (in Variable d) ausgelesen. Ist der Wert = 0 (value=0) , ist in der Zelle also keine Zahl, dann wird die Zeile ausgeblendet(Rows(a).EntireRow.Hidden = True)
Der Code in der For Next-Schleife wäre dann so:
If Application.WorksheetFunction.IsText (Cells(a, d)) = True Then Rows(a).EntireRow.Hidden = True
Ich hoffe, der Code stimmt. Ich konnte ihn nicht ausprobieren.