Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

Such Makro





Frage

Hallo Zusammen, Ich benötige mal wieder eure Hilfe zu einer gestellten Aufgabe, da ich mir nicht sicher bin, ob man dieses mit einem Excel Makro umsetzen kann (habe noch nicht so viel Ahnung davon). Ich visualisiere mein Probelm mal wie folgt: Ich habe folgendes Shema gegeben: Spalte A........Spalte B.....Spalte C......Spalte D Kunde 1...........S1..............S2.....................S3 Kunde 2...........S2..............S3.....................S1 Kunde 3...........S3..............S2.....................S2 Kunde 4...........S3..............S2.....................S1 ..... ..... Ich suche nun eine Möglichkeit über ein Suchfenster einen Begriff einzugeben z.B. S1 und danach sollen nur die Zeilen angezeigt werden, die S1 enthalten. So zum Beispiel Spalte A........Spalte B.....Spalte C......Spalte D Kunde 1...........S1..............S2.....................S3 Kunde 2...........S2..............S3.....................S1 Kunde 4...........S3..............S2.....................S1 Könnt Ihr mir in dieser Sache weiter helfen?? Danke im Voraus. Gruss Ingo

Antwort 1 von nighty

hi ingo :)

wie gewünscht :))

gruss nighty

Option Explicit
Sub suchenAusblenden()
Dim meineEingabe As String
Dim meineZeilen As Long
Dim merkZeilen As Long
Dim suche As Range
If Range("A2:A65535").EntireRow.Hidden = True Then
Range("A2:A65535").EntireRow.Hidden = False
Else
merkZeilen = 2
meineEingabe = InputBox("Bitte geben Sie den Suchbegriff ein !")
For meineZeilen = 2 To Worksheets(1).UsedRange.SpecialCells(xlCellTypeLastCell).Row + 1
Set suche = Worksheets(1).Range("B" & meineZeilen & ":D" & Worksheets(1).UsedRange.SpecialCells(xlCellTypeLastCell).Row + 1).Find(meineEingabe)
If Not suche Is Nothing Then
Range("A" & merkZeilen & ":A" & suche.Row - 1).EntireRow.Hidden = True
merkZeilen = suche.Row + 1
meineZeilen = suche.Row + 1
Else
End
End If
Next meineZeilen
End If
End Sub

Antwort 2 von nighty

hi all :)

ich vergass noch das es in wechselwirkung arbeitet und rasant schnell ist :)))

gruss nighty

Antwort 3 von Dayworker

Hi nighty !

Vielen Dank für den Code. Funktioniert suuupppeerr und ist echt schnell. Respekt an deine Künste :-).

Veilleicht kannst du mir noch ein weiteres mal unter die Arme greifen, da sich meine Aufgabe ein wenig geändert hat.

Das Schema sieht nun wie folgt aus:

Zeile
Zeile

Spalte A...............Spalte B.(KW 1)........................SpalteC.....
X...............Spalte1|Spalte2|Spalte3|Spalte4|Spalte1|Sp..
Kunde........S1......|..S2.......|..............|...............|..............|..S2
Kunde...................|..S2.......|..............|......S4....|..............|..S2
...
..

Die Zeile mit dem X enthält 208 Spalte ( 4Spalten mal 52 Wochen). Insgesammt 209 Spalten mit der Spalte Kunden. Die Funktionalität mit dem Suchen und dem anzeigen soll die gleiche sein wie oben. Vielleicht läßt sich der Code entsprechend anpassen wenn es möglich ist??


Gruss Ingo

Antwort 4 von Dayworker

Hi nochmal!

Was noch sehr wichtig ist. Bekommt man die Umsetzung so hin, das man nach dem man den Suchbegriff eingegeben hat und die entsprechenden Zeilen angezeigt wurden, rückwirkend wieder alle Zeilen angezeigt werden können.



Gruss
Ingo

Antwort 5 von nighty

hi ingo :)

zu eins

in dieser zeile ist der zu begrenzende suchbereich angegeben

von spalte - das grosse B
bis spalte - das grosse D

Set suche = Worksheets(1).Range("B" & meineZeilen & ":D" & Worksheets(1).UsedRange.SpecialCells(xlCellTypeLastCell).Row + 1).Find(meineEingabe)

wobei natuerlich auch a-iv angegeben werden koennte

zu zwei

da es ja in wechselwirkung arbeitet ist ein erneuter start die wiedereinblendung

gruss nighty

Antwort 6 von Dayworker

Hi nighty,


danke nochmals für deine Unterstützung ! Echt super dieses Forum!!

Wünsche Dir ein schönes Wochenend.

PS: Gibt es hier irgendwo eine Bewertungsmöglichkeit für User die anderen geholfen haben???

Gruss Ingo

Antwort 7 von Dayworker

Hi!

Bei der Ausführung verschwindet die obersten Zeilen. In diesen möchte ich entsprechende Beschriftungen einfügen. Wie bekomem ich es hin das die Funktion erst ab der Zeile 5 mit der Auswahl beginnt?

Gruss
ingo

Antwort 8 von nighty

hi ingo :)

in dieser zeile ist die 2 der anfang

gruss nighty

For meineZeilen = 2 To Worksheets(1).UsedRange.SpecialCells(xlCellTypeLastCell).Row + 1

Antwort 9 von Dayworker

Hi!

Irgendwie funktioniert das nicht so richtig wie ich es mir vorstelle. Wenn ich in der ersten Zeile einen Text habe z.B Überschrift und in der zweiten Zeile ebenfalls einen Text muss im Code eine 3 stehen => For meineZeilen = 3 To Worksheets(1).UsedRange.SpecialCells(xlCellTypeLastCell).Row + 1

Wenn ich nun den Code ausführen lasse blendet er die 2-te Zeile aber aus. Warum?

Gruss
Ingo

Antwort 10 von schnallgonz

Hi Dayworker,
ich hoffe, nighty verzeiht mir, wenn ich mich einmische.
Ersetz mal in
If Range("A2:A65535").EntireRow.Hidden = True Then
Range("A2:A65535").EntireRow.Hidden = False 

A2 durch A3

Schönes WE

MfG
schnallgonz

Ich stimme mit der Mathematik nicht überein.
Ich meine, daß die Summe von Nullen eine gefährliche Zahl ist. (S.J. Lec)
Signatur und Textformatierungen wurden mit SNTool V1.2.14 erstellt

Antwort 11 von Dayworker

Hi zusammen!!

Es funktioniert immer noch nicht! :-( Wenn ich es so abändere wie Ihr es hier beschriebt, blendet er die zweite Zeile immer noch aus. Das zweite Problem ist, wenn ich Werte bis zur Zeile G habe und dies ebenfalls im Code abändere ( Set suche = Worksheets(1).Range("B" & meineZeilen & ":G" & Worksheets(1).UsedRange.SpecialCells(xlCellTypeLastCell).Row + 1).Find(meineEingabe)
werden die Werte in Spalte B nicht mit beachtet obwohl in dieser ein Wert enthalten ist , nach dem ich suche!!
Vielleicht hat ja jemand dazu einen Lösungsvorschlag? Nicht aufgeben, ich hoffe wir bekommen das hin!! :-) Bin immer noch guter Hoffnung!!!!

Gruss
Ingo

Antwort 12 von nighty

hi ingo :)

vielleicht so :))

gruss nighty

Option Explicit
Sub suchenAusblenden()
Dim meineEingabe As String
Dim meineZeilen As Long
Dim merkZeilen As Long
Dim suche As Range
If Range("A3:A65535").EntireRow.Hidden = True Then
Range("A3:A65535").EntireRow.Hidden = False
Else
merkZeilen = 3
meineEingabe = InputBox("Bitte geben Sie den Suchbegriff ein !")
For meineZeilen = 3 To Worksheets(1).UsedRange.SpecialCells(xlCellTypeLastCell).Row + 1
Set suche = Worksheets(1).Range("B" & meineZeilen & ":G" & Worksheets(1).UsedRange.SpecialCells(xlCellTypeLastCell).Row + 1).Find(meineEingabe)
If Not suche Is Nothing Then
Range("A" & merkZeilen & ":A" & suche.Row - 1).EntireRow.Hidden = True
merkZeilen = suche.Row + 1
meineZeilen = suche.Row + 1
Else
End
End If
Next meineZeilen
End If
End Sub

Antwort 13 von Dayworker

Morgen zusammen!!!

Nighty, ich habe deine Änderungen in den Code übernommen, muss aber leider immer noch berichten, dass es nicht so richtig funktioniert.
Ich habe hier mal die Aktionen, die ich ausführe aufgezeigt.
Vor der Suche:
Überschrift
KW..............................Kalenderwoche 1
Kunde 1...........S1...........S2
Kunde 2................................................S3
Kunde 3...........................S2................S3
Kunde 4...........................S2......................................S4

Nach der Suche nach S1
Überschrift
Kunde 2................................................S3
Kunde 3...........................S2................S3
Kunde 4...........................S2......................................S4

Nach der Suche nach S2
Überschrift
Kunde 3...........................S2................S3
Kunde 4...........................S2......................................S4

Nach der Suche nach S3
Überschrift
KW..............................Kalenderwoche 1
Kunde 2................................................S3
Kunde 3...........................S2................S3
Kunde 4...........................S2......................................S4

b]Nach der Suche nach S4
Überschrift
KW..............................Kalenderwoche 1
Kunde 4...........................S2......................................S4

Gruss
Ingo

Antwort 14 von nighty

hi ingo

die letzten zeilen nach dem letzten fund wurden noch nicht berücksüchtigt. korrigiert

ansonsten kein fehler zu entdecken ist :))

bzw. die anderen user gefragt sind zwecks fehlerbereinigung :))

gruss nighty

Sub suchenAusblenden()
Dim meineEingabe As String
Dim meineZeilen As Long
Dim merkZeilen As Long
Dim suche As Range
If Range("A3:A65535").EntireRow.Hidden = True Then
Range("A3:A65535").EntireRow.Hidden = False
Else
merkZeilen = 3
meineEingabe = InputBox("Bitte geben Sie den Suchbegriff ein !")
For meineZeilen = 3 To Worksheets(1).UsedRange.SpecialCells(xlCellTypeLastCell).Row + 1
Set suche = Worksheets(1).Range("B" & meineZeilen & ":G" & Worksheets(1).UsedRange.SpecialCells(xlCellTypeLastCell).Row + 1).Find(meineEingabe)
If Not suche Is Nothing Then
Range("A" & merkZeilen & ":A" & suche.Row - 1).EntireRow.Hidden = True
merkZeilen = suche.Row + 1
meineZeilen = suche.Row + 1
Else
Range("A" & merkZeilen & ":A" & Worksheets(1).UsedRange.SpecialCells(xlCellTypeLastCell).Row + 1).EntireRow.Hidden = True
End
End If
Next meineZeilen
End If
End Sub

Antwort 15 von nighty

hi ingo :)

ich arbeite kaum mit excel daher immer wieder einige unzulänglichkeiten,wir kommen der sache schon näher glaub ich :))

gruss nighty

Antwort 16 von nighty

hi ingo :))

bin ja gespannt :))

gruss nighty

Antwort 17 von Dayworker

Hi!!

Es funktioniert immer noch nicht so richtig!
Die Zeile 3 verschwindet wenn ich nach S3 suche.
Zudem besteht immer noch das Problem, das der Code wenn ich zum Beispiel nach S2 suche
Überschrift
Test
Kunde 1.......S1....................................S3
Kunde 2............................S2
Kunde 3............................S2...............S3
Kunde 4.......S1.......................................................S4

nicht richtige Ergebnisse liefert.

Überschrift
Test
Kunde 2............................S2


Das richtige Ergebniss müsste aber wie folgt lauten:
Überschrift
Test
Kunde 2............................S2
Kunde 3............................S2...............S3



Gruss
Ingo

Antwort 18 von Dayworker

Hi !

Kann mir keiner bei meiner Problemstellung helfen??

Gruss
Ingo

Antwort 19 von nighty

hi ingo :)

neuer versuch :))

gruss nighty

Option Explicit
Sub suchenAusblenden()
Dim meineEingabe As String
Dim meineZeilen As Long
Dim merkZeilen As Long
Dim suche As Range
Dim merker As Boolean
For meineZeilen = 1 To Worksheets(1).UsedRange.SpecialCells(xlCellTypeLastCell).Row + 1
If Range("A" & meineZeilen).EntireRow.Hidden = True Then
Range("A" & meineZeilen).EntireRow.Hidden = False
merker = True
End If
Next meineZeilen
If merker = True Then End
merkZeilen = 4
meineEingabe = InputBox("Bitte geben Sie den Suchbegriff ein !")
For meineZeilen = 3 To Worksheets(1).UsedRange.SpecialCells(xlCellTypeLastCell).Row + 1
Set suche = Worksheets(1).Range("B" & meineZeilen & ":G" & Worksheets(1).UsedRange.SpecialCells(xlCellTypeLastCell).Row + 1).Find(meineEingabe)
If Not suche Is Nothing Then
If suche.Row <> merkZeilen Then Range("A" & merkZeilen & ":A" & suche.Row - 1).EntireRow.Hidden = True
merkZeilen = suche.Row + 1
meineZeilen = suche.Row
Else
Range("A" & merkZeilen & ":A" & Worksheets(1).UsedRange.SpecialCells(xlCellTypeLastCell).Row + 1).EntireRow.Hidden = True
End
End If
Next meineZeilen
End Sub

Antwort 20 von Dayworker

Hi !

Also es funktioniert für die Suche von S1 und S4. Bei der Suche nach S2 wird kein Ergebniss und bei der Suche nach S3 nur ein Teilergebniss angezeigt. Zudem muss ich das Makro mehrmals nach einer Suche ausführen, damit das Suchfenster erscheind. Liegt sicherlich daran, das bis zur Zeile 12 die Zeilen ausgeblendet werden.

Gruss
Ingo

Antwort 21 von nighty

hi ingo :)

auf ein neues

gruss nighty

Option Explicit
Sub suchenAusblenden()
Dim meineEingabe As String
Dim meineZeilen As Long
Dim merkZeilen As Long
Dim suche As Range
Dim merker As Boolean

rem hier vielleicht auf das max der zeilen begrenzen

For meineZeilen = 1 To 65535
If Range("A" & meineZeilen).EntireRow.Hidden = True Then
Range("A" & meineZeilen).EntireRow.Hidden = False
merker = True
End If
Next meineZeilen
If merker = True Then End
merkZeilen = 4
meineEingabe = InputBox("Bitte geben Sie den Suchbegriff ein !")
For meineZeilen = 3 To Worksheets(1).UsedRange.SpecialCells(xlCellTypeLastCell).Row + 1
Set suche = Worksheets(1).Range("B" & meineZeilen & ":G" & Worksheets(1).UsedRange.SpecialCells(xlCellTypeLastCell).Row + 1).Find(meineEingabe)
If Not suche Is Nothing Then
If suche.Row <> merkZeilen Then Range("A" & merkZeilen & ":A" & suche.Row - 1).EntireRow.Hidden = True
merkZeilen = suche.Row + 1
meineZeilen = suche.Row
Else
Range("A" & merkZeilen & ":A" & Worksheets(1).UsedRange.SpecialCells(xlCellTypeLastCell).Row + 1).EntireRow.Hidden = True
End
End If
Next meineZeilen
End Sub

Antwort 22 von Dayworker

Hi nighty!

Vielen Danke für deine Bemühungen. Dein Code funktioniert super! Nachmals "Vielen Dank" und weiter so!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!


Gruss
Ingo

Antwort 23 von nighty

hi ingo :)

super ja nun gar net :( mein schönes makro nun langsam ist,weil sich zeilen die auseinanderliegen und ausgeblendet sind sich nur wieder zeilenweise einblenden lassen grrr ich arbeite daran :))

wenn wer noch ideen hat vielleicht :))

1 frage
wie laestt sich ueber true false oder auch anders feststellen ob ueberhaubt eine zeile ausgeblendet ist

2 frage

wie liesse sich in einem rutsch nicht zusammenhängende ausgeblendete zeilen wieder einblenden

beide probleme wollte ich eigentlich ohne schleifen realisieren :)) und häng gnadenlos fest :))

gruss nighty

Antwort 24 von Dayworker

Hi nighty!

Ich habe deinen Code gestern ausprobiert. Diesen habe ich im Vorfeld durchgeschaut und ihn ein bißchen verändert nachdem ich ihn verstanden hatte.
Hier also dein Code mit meinen geringfühigen Änderungen.
Sub suchen()
Dim meineEingabe As String
Dim meineZeilen As Long
Dim merkZeilen As Long
Dim suche As Range
Dim merker As Boolean
Dim m As Long

Cells.Select
Selection.Rows.AutoFit
Range("A1").Select



For meineZeilen = 1 To Worksheets(1).UsedRange.SpecialCells(xlCellTypeLastCell).Row + 1
If Range("A" & meineZeilen).EntireRow.Hidden = True Then
Range("A" & meineZeilen).EntireRow.Hidden = False
merker = True
End If
Next meineZeilen

If merker = True Then End

merkZeilen = 3
meineEingabe = InputBox("Bitte geben Sie das Abteilungskürzel ein !")
For meineZeilen = merkZeilen - 1 To Worksheets(1).UsedRange.SpecialCells(xlCellTypeLastCell).Row + 1
Set suche = Worksheets(1).Range("A" & meineZeilen & ":HA" & Worksheets(1).UsedRange.SpecialCells(xlCellTypeLastCell).Row + 1).Find(meineEingabe)
If Not suche Is Nothing Then
If suche.Row <> merkZeilen Then Range("A" & merkZeilen & ":A" & suche.Row - 1).EntireRow.Hidden = True
merkZeilen = suche.Row + 1
meineZeilen = suche.Row
Else
Range("A" & merkZeilen & ":A" & Worksheets(1).UsedRange.SpecialCells(xlCellTypeLastCell).Row + 1).EntireRow.Hidden = True
End
End If
Next meineZeilen

End Sub



Deine Frage 2 habe ich bei mir mit dem fett hinterlegten Code umgesetzt. Zu Frage zwei kann ich dir keine Hilfestellung geben, da wird es sicherlich aber irgendwo eine Funktion geben wie bei anderen Programmiersprachen.
Ich hoffe ich konnte dir nun ein wenig helfen!
Gruss Ingo

Antwort 25 von waddehaddedudeda

Hallo Jungs,

ich suche genau obige Funktion, nur nicht mit ausblenden, sondern mit Filtern.
Der untenstehende Code den ich aus den Anfangszeiten dieses Artikels verwendet habe, funktioniert bei mir einwandfrei.

Hintergrund ist der, das ich die noch übrigen, also noch eingeblendeten in eine neue Datei kopieren möchte. Wenn ich das mit diesrer Lösung mache, kopiert er aber auch die ausgeblendetetn Zeilen mit, was ich aber nicht möchte.

Mein Makro soll nur die "Trefferzeilen" so auswählen, das man diese dann woanders hinkopieren kann.

Jemand eine Idee was ich hierzu noch einbauen oder ändern müsste?

Vielen Dank schonmal!

--------------
Sub suchenAusblenden()
Dim meineEingabe As String
Dim meineZeilen As Long
Dim merkZeilen As Long
Dim suche As Range
If Range("A3:A65535").EntireRow.Hidden = True Then
Range("A3:A65535").EntireRow.Hidden = False
Else
merkZeilen = 3
meineEingabe = InputBox("Bitte geben Sie den Suchbegriff ein !")
For meineZeilen = 3 To Worksheets(1).UsedRange.SpecialCells(xlCellTypeLastCell).Row + 1
Set suche = Worksheets(1).Range("B" & meineZeilen & ":G" & Worksheets(1).UsedRange.SpecialCells(xlCellTypeLastCell).Row + 1).Find(meineEingabe)
If Not suche Is Nothing Then
Range("A" & merkZeilen & ":A" & suche.Row - 1).EntireRow.Hidden = True
merkZeilen = suche.Row + 1
meineZeilen = suche.Row + 1
Else
Range("A" & merkZeilen & ":A" & Worksheets(1).UsedRange.SpecialCells(xlCellTypeLastCell).Row + 1).EntireRow.Hidden = True
End
End If
Next meineZeilen
End If
End Sub
---------------------------


Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: