Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1068to1072
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
Inhaltsverzeichnis

Werte In Tab 2 suchen und nach Tab 1 kopieren

Werte In Tab 2 suchen und nach Tab 1 kopieren
15.04.2009 09:50:31
Peter_weber
Liebe Experten,
versuche gerade VBA zu erlernen, um bestimmte wiederkehrende Abfragen schneller durchzuführen.
Wie könnte ein VBA Makro für folgendes Problem aussehen. Als Anfänger bin hier hoffnungslos überfordert.
Also
- ich habe eine Abfragemaske im Worksheet "Werte-Eingeben".
- Im Worksheet "Alle-Werte" sind alle meine Daten eingepflegt
(es sind eigentlich mehrere hundert Zeilen und ca. 25 Spalten)
- In "Werte-Eingeben" möchte ich Suchkriterien eingeben
(früher manuell in "Alle-Werte" mit Filter 'enthält' durchgeführt)
- Jetzt sollen die entsprechenden Zeilen in "Alle-Werte" gefunden werden und nur bestimmte "Spalten"
nach "Werte-Eingabe" kopiert werden.
- Wenn es zuviele Zeilen werden, soll die Suche weiter eingegrenzt werden können
Anbei eine Bsp.-Datei für mein Problem
https://www.herber.de/bbs/user/61200.xls
Ich möchte mich für Eure Hilfe bereits im voraus bedanken. Es ist bestimmt viel Arbeit so ein Makro zu erstellen
An hand der Lösung möchte ich auch lernen in der Zukunft selbst Lösungen zu erarbeiten.
Nochmals vielen Dank!
Peter

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Werte In Tab 2 suchen und nach Tab 1 kopieren
15.04.2009 16:04:33
fcs
Hallo Peter,
eigentlich macht es keinen Sinn, den Autofilter "nachzubauen".
Wenn du nur bestimmte Spalteninhalte in die 2. Tabelle übertragen möchtest, dann ist es einfacher, die Filter wie gewohnt in "Alle Werte" zu setzen und dann von allen nach dem Filtern sichtbaren Zeilen die Inhalte der gewünschten Spalten in die 2. Tabelle zu übertragen.
Zusätzlich kannst du über den Ansichtenmanager die Ansicht relativ schnell immer so einstellen, dass nur die Spalten von den ca. 25 angezeigt werden, die du während des Setzens der Filter angezeigt haben möchtest.
Gruß
Franz
Beispiel (ungetestet, da hier kein Zugriff auf Excel) für Übertragung der gewählten _ Filtereinstellungen und er Werte in ein 2. Blatt. Ich hoffe, dass ich die Methoden und Eigenschaften der Objekte ohnr Editor korekt getroffen hab.

Sub Datentransfer
Dim wksAlle as Worksheet, wksAusgabe as Worksheet
Dim lngAlle as Long, lngAusgabe as Long
Dim SpalteAlle as Long, SpalteFilter as long
Dim objFilter as Filter, intFilter as Integer
Const TitelAlle as long = 5 'Titelzeile in Alle Werte
Set wksAlle = Worksheets("Alle_Werte")
Set wksAusgabe = Worlsheets("Werte_Eingabe")
'Daten im Ausgabeblatt löschen
wksAusgabe.Cells.Clear
With wksAlle
'Filter-Werte im Ausgabe-Blatt eintragen
lngAusgabe=1
wksAusgabe.Cells(lngAusgabe,1)="Filter:"
lngAusgabe=lngAusgabe + 1
wksAusgabe.Cells(lngAusgabe,1)="Spalte"
wksAusgabe.Cells(lngAusgabe,2)="Filter 1"
wksAusgabe.Cells(lngAusgabe,3)="Filter-Operator"
wksAusgabe.Cells(lngAusgabe,4)="Filter 2"
SpalteFilter= .Autofilter.Range.Column '1. Spalte des Autofilterbereichs
For intFilter = 1 to .Autofilter.Filters.Count
set objFilter = .Autofilter.Filters(intFilter)
if objFilter.On = True then
lngAusgabe=lngAusgabe + 1
'Spaltentitel eiensw gesetzten Filters übertragen
wksAusgabe.Cells(lngAusgabe,1)=.Cells(TitelAlle, SpalteFilter _
+ intFilter-1).Text
'Filter-Wwerte und ggf. Operator eintragen
wksAusgabe.Cells(lngAusgabe,2)=objFilter.Criteria1
if objFilter.Criteria2 "" then
wksAusgabe.Cells(lngAusgabe,3)=objFilter.Operator
wksAusgabe.Cells(lngAusgabe,4)=objFilter.Criteria2
end if
end if
Next
'Spaltentitel im Ausgabeblatt eintragen
lngAusgabe = lngAusgabe + 1
wksAusgabe.Cells(lngAusgabe, 1) = "PLZ"
wksAusgabe.Cells(lngAusgabe, 2) = "Name"
wksAusgabe.Cells(lngAusgabe, 3) = "Ausbildung"
wksAusgabe.Cells(lngAusgabe, 4) = "T1"
wksAusgabe.Cells(lngAusgabe, 5) = "achwas"
'gefilterte Daten (aus sichtbaren zeilen) übertragen
For lngAlles = Titelalle + 1 to .Cells(.rows.count, 2).End(xlUp).Row
If .Rows(lngAlles).Hidden=False then
lngAusgabe = lngAusgabe + 1
wksAusgabe.Cells(lngAusgabe,1 )= .Cells(lngAlles, 1)'"PLZ" - Spalte A
wksAusgabe.Cells(lngAusgabe,2) = .Cells(lngAlles, 2)'"Name" - Spalte B
wksAusgabe.Cells(lngAusgabe,3) = .Cells(lngAlles, 6)'"Ausbildung" - Spalte F
wksAusgabe.Cells(lngAusgabe,4) = .Cells(lngAlles, 7)'"T1" - Spalte G
wksAusgabe.Cells(lngAusgabe,5) = .Cells(lngAlles, 9)'"achwas" - Spalte J
End If
next
End With
End Sub


Anzeige
AW: Werte In Tab 2 suchen und nach Tab 1 kopieren
15.04.2009 17:01:45
Peter_weber
Hallo Franz,
herzlichen Dank für deine Antwort, 'werde versuchen die einzelnen Schritte nachzuvollziehen.
Schönen Tag,
Peter
AW: Werte In Tab 2 suchen und nach Tab 1 kopieren
15.04.2009 17:26:51
Peter_weber
Hall Franz,
leider läuft das Makro nicht.
Laufzeitfehler 9 "Index ausßerhalb des gültigen Bereichs"
Fehler in Set wksAlle = Worksheets("Alle_Werte")
Kann den Fehler nicht korriegieren Mangels entsprechender Kenntnisse
Könntest du dir bitte das Makro noch einmal anschauen?
Danke
Peter
AW: kleine Fehler ...
15.04.2009 18:21:56
Daniel
... sollte man schon selbst korrigieren können.
"Index außerhalb des gültien Bereiches" heißt in diesem Fall nur, daß es kein Worksheet mit Namen "Alle_Werte" gibt.
in diesem Fall musst du halt an dieser Stelle den Namen eines existierenden Sheets einfügen oder ein Sheet in "Alle_Werte" umbenennen.
Da außer dir niemand weiß, wie du deine Sheets benannt hast, kannst auch nur du alleine diesen Fehler beheben.
Gruß, Daniel
Anzeige

340 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige