Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
652to656
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
652to656
652to656
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Filtern

Filtern
21.08.2005 19:40:16
Reinhard
Guten Tag.
Zufällig habe ich von diesem Forum erfahren und nun mich hier eingeloggt. Ich bin Anfänger und habe noch sehr wenig Ahnung von Vba. Beim "Herumstöbern" sah ich das folgende Makro: Wenn ich das richtig verstehe, kann ich damit aus zwei Boxen -also von bis- nach Ziffern oder Buchstaben Filtern. Ich habe versucht, es einmal aus zu probieren. Wissen Sie, warum nicht die ganze Spalte oder die ganzen Spalten zu den gefundenen Namen in Tabelle 2 kopiert werden? Wie kann so ein Makro aussehen, wenn ich zum Beispiel 4 Textboxen nehme. Einmal von-bis und das nächste Mal auch von-bis und wenn dann die gefundenen Datensätze auch in Tabelle 2 kopiert werden sollen?
Mit freundlichen Grüßen
Reinhard

Private Sub CommandButton1_Click()
Dim spalte$, x%, y%
y = 1
spalte = InputBox("Spalte?", , "A")
Sheets("Tabelle1").Activate
For x = 1 To Cells.SpecialCells(xlCellTypeLastCell).Row
If UCase(Left(Range(spalte & x), 3)) >= UCase(txtBeginn) And UCase(Left(Range(spalte & x), 3)) <= UCase(txtEnde) Then
Sheets("Tabelle2").Range(spalte & y) = Range(spalte & x)
y = y + 1
End If
Next x
End Sub

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Filtern
22.08.2005 07:58:02
Harald
Hallo Reinhard,
willkommen im Forum (man duzt sich ;-))
Es wird nur Range(spalte & x) nach Blatt 2 geschrieben. Spalte ist das was man bei Makrostart in die Inputbox schreibt, x ist der Zähler 1 To Cells.SpecialCells(xlCellTypeLastCell).Row...also bis zur letzten Zelle (Anmerk.: dazu nimmt man eigentlich cells(rows.count, 1).end(xlup).row )
Die If-Bedingungen txtBeginn und txtEnde sind allerdings in diesem Code nicht deklariert.
Für mehrere Inputboxen kann man z.B.:
vonSpalte = Inputbox("Suchen von Spalte ")
bisSpalte = Inputbox(" bis Spalte.")
deklarieren und die
Zielzeile in Blatt 2 so anpassen
Sheets("Tabelle2").Range(vonSpalte & y & ":" & bisSpalte & y) = Range(vonSpalte & x & ":" & bisSpalte & x)
Gruß
Harald
Anzeige
AW: Filtern
22.08.2005 19:01:56
Reinhard
Guten Tag Harald,
nach Feierabend schnell in das Forum geschaut, entdecke ich Deine Antwort, für die ich Dir danke. Ich kann leider erst immer frühmorgens oder abends nach Feierabend schauen, da ich über Tag keinen Computer zur Verfügung habe. Ich habe versucht, Deine Hinweise aufzugreifen - komme damit aber irgendwie nicht weiter,weil mir wohl noch die entscheidenden Kenntnisse hierzu fehlen. Vergessen habe ich zu sagen, dass ich die Input-Box vollständig entfernt habe und als Spalte in dem Beispiel die Spalte A festgelegt habe. Die TextBoxen -txtBeginn- und txtEnde habe ich in ein UserForm eingebettet und dann das Makro da hinterlegt. Es gelingt mir aber jetzt nicht, das alles mit Deinen Vorschlägen umzubauen. Ich würde ja gerne erreichen, dass die gefilterten Datensätze (Wenn ich also z.B. sage von AAA bis HOO, dann auch die Datensätze zu den gefundenen Namen)vollständig in die Tabelle 2 kopiert werden. So wird jetzt gerade nur der jeweilige Name rüberkopiert. Wie müßte ich aus Deiner Sicht das Makro ändern oder welche andere Idee gäbe es dazu? - Du schreibst da etwas von cells(rows.count, 1).end(xlup).row )um das eigentlich damit zu lösen. Wie und wo müßte aus Deiner Sicht dann das Makro umgeschrieben werden? - Ich hoffe, ich habe nun nicht allzuviel Fragen gestellt. Freue mich jetzt schon wieder über Deine Rückantwort.
Mit freundlichen Grüßen
Reinhard

Anzeige
AW: Filtern
23.08.2005 09:02:12
Harald
Hallo Reinhard,
das hört sich an, als ob du mit Excel ACCESS nachbauen willst.
Das filtern zwischen Buchstaben ist für mich auch eine Spur zu hoch, mehrdimensionales Array und was da noch dazugehört.....kann ich nicht.
Wenn es unbedingt Excel sein muss, würde ich Folgendes machen
Hilfsspalte, dorthinein alle vorkommenden Suchbegriffe (aus der Liste per Spezialfilter ohne Duplikate extrahiert). Diese Suchbegriffe alphabetisch sortiert und dann mit einer inneren (für die zu durchsuchende Liste) und äußeren (mit den Suchbegriffen) Schleife die Liste durchsuchen und die benötigten Fundstellen in das zweite Blatt übertragen. Das wäre meine Idee. Aber das ist etwas umfangreich und daher breche ich hier mal ab und schaue, was Du dazu sagst.
Gruß
Harald
Anzeige
AW: Filtern
24.08.2005 05:58:09
Reinhard
Guten Tag Harald,
schön, wieder von Dir zu hören bzw. zu sehen und Danke hierfür. Das Makro, welches ich in den ersten Beitrag hinein kopiert habe, sucht schon nach Buchstaben heraus. Ich habe ein Userform mit zwei Textboxes gemacht (txtAnfang) und (txtEnde) und eine feste Spalte zugewiesen -also die Inputbox- weggelassen. Das funktioniert auch soweit. Allerdings werden mir nur die Namen aus der Spalte A in die Tabelle 2 -auch Spalte A- kopiert. Ich suche jetzt nach einer Möglichkeit, das Makro so umzustellen, dass nicht nur der Name für sich, sondern der vollständige Datensatz (Spalten A bis U), der z.B. noch Anschrift, Geburtsdatum etc. enthält, in die Tabelle 2 kopiert wird. Was meinst Du? - sollte ich diesen Beitrag mit der Frage noch wieder neu ins Forum stellen oder wird er evtl. auch von Anderen gelesen, die dann vielleicht noch eine Idee haben könnten. Ich freue mich schon jetzt wieder über Deine Rückantwort und bedanke mich schon jetzt dafür.
Mit freundlichen Grüßen
Reinhard
Anzeige
AW: Filtern
24.08.2005 09:53:18
Harald
Hallo Reinhard,
ich hab die Sache mal so aufgebaut, wie ich das machen würde.
txtBeginn und Ende hatte ich durch andere Kriterien ersetzt, da ich das nicht nachbauen wollte.

Private Sub CommandButton2_Click()
Dim x As Integer, i As Integer
x = 1
For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row
If UCase(Left(Range("A" & i), 3)) >= UCase(txtBeginn) _
And UCase(Left(Range("A" & i), 3)) <= UCase(txtEnde) Then
Sheets(2).Range("A" & x & ":U" & x) = Sheets(1).Range("A" & i & ":U" & i).Value
x = x + 1
End If
Next i
End Sub

Sollte das nicht deinen Anforderungen entsprechen, wäre es wirklcih besser einen neuen Thread aufzumachen, bevor der hier rausfällt.
Gruß und viel Erfolg
Harald
Anzeige
Super - es klappt!!
24.08.2005 20:44:51
Reinhard
Guten Tag Harald,
ich habe, nachdem ich heute abend Deine Rückmeldung sah, das von Dir erstellte Makro sofort getestet und in mein Userform hinein kopiert. Es klappt super. Die Namen werden nach den Vorgaben in den txtBoxen entsprechend gefiltert und die dazugehörigen anderen Daten werden mit in die Tabelle 2 kopiert. Genau so hatte ich es mir gewünscht - hätte es aber nicht realisieren können, weil mir dafür noch einfach zuviel Hintergrundwissen fehlt. Ich danke Dir recht herzlich für Deine Geduld und die Ausarbeitungen die Du mir entgegengebracht hast bzw. zur Verfügung gestellt hast.
Mit freundlichen Grüßen
Reinhard
Anzeige
Das war nett...ebenfalls Danke für Rückmeldung
25.08.2005 07:26:47
Harald
Harald

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige