muss wieder für eine Datenanalyse ein makro basteln.
Also:
Meine Excel(Tabelle 1) geht von Spalte A bis S. In Spalte A stehen Namen und in spalte P und Q meine „suchwörter“. Habe die Suchwörter in Spalte S verbunden. Zum Beispiel steht nun in Spalte S: „SystemOffice“(zusammengefügt aus spalte p und q)
Was soll das Makro nun bewerkstelligen?
Suche in Spalte P nach dem suchwort „NAME“ und kopiere alle darunter liegende Zeilen (inkl der Zeile in dem „Name“ steht) bis in Spalte P das Wort „System“ steht.
Suche in Spalte S nach den suchwörtern die im Tabelle 2 in Spalte A2:A30 stehen und kopiere alle darunter liegende Zeilen (inkl der Zeile in dem das suchwort steht).Beende das Kopieren wenn in Spalte P „system“ steht.
Ich hoffe ich konnte mich verständlich genug ausdrücken Vorab vielen Dank : ) für die Hilfe
vielen dank für deine hilfe! Also als nächstes sollen suchwörter (die in Tabellenblatt 2 stehen(in zeile a1:a30))
in der Spalte S gesucht werden. wenn das suchwort gefunden wurde dann soll wie in aufgabe eins die zeile und die darunter liegenden zeilen kopiert werden bis das wort system in spalte p steht, kopiert werden.
Die zeilen sollen alle in Tabellenblatt 3 ausgeworfen werden.
Hoffe ich war einiger maßen verständlich…
gerne kann ich auch eine bsp excel zu senden
Sub x()
With Range(„p:stuck_out_tongue:“)
Range(.Find(„NAME“), .Find(„System“)).EntireRow.Select
End With
End Sub
wenn du statt „Select“ „Copy“ schreibst, ist der bereich, den
du beschreibst, in der zwischenablage.
allerdings habe ich noch nicht verstanden, was genau wohin
kopiert werden soll. wenn das geklärt ist, mache ich mich an
aufgabe 2.
also zwei dinge name steht öffter drin das bedeutet es müsste eine schleife sein damit ich alle bekomme und system steht öfter drin. da die perosonen auf verschiedene systeme geschlüsselt sind.
ich habe nicht ganz verstanden, was Du erreichen möchtest.
Aber schau doch mal unter Daten > Filter > Spezialfilter. Mit diesem Befehl kannst Du aus Deiner Liste selektiv Datensätze an neine andere Stelle kopieren lassen. Es sind komplexe Kriterien möglich. Die Suchkriterien müssen in einem eigenen Tabellenbereich stehen (es bietet sich an, eine Kopie der Listenüberschriften zu erstellen und darunter die Suchkriterien einzutippen).
Die Suche läßt man „an eine andere Stelle“ filtern. Die Daten werden tatsächlich dort hinkopiert. Wenn Du das Suchergebnis erneut sortierst, kannst Du alles, was unterhalt von System steht, löschen.
Den Vorgang würde ich erst einmal trocken üben, bis genau das gewünschte Suchergebnis entsteht, und dann ein Makro aufzeichnen.
Alternativ beschäftige Dich mit Pivottabellen. Davon verstehe ich nichts. Aber Thomas Ramel (der hiesige Moderator) hat einleuchtende Beispiele auf seiner Homepage (ich weiß nicht genau, wo die ist, aber wenn Du hier im Forum nach Quickline und Ramel suchst, solltest Du schnell auf den Link kommen).
Hallo m.judoka,
mit deiner Fragestellung, respektive den Daten komme ich absolut nicht klar.
Was willst du eigentlich?
Willst du was suchen, oder sortieren, oder was?
Zur Datenanalyse gibt es den Sverweis, welcher sehr gut ist.
Schicke mir doch mal deine Tabelle und beschreibe dein Problem, dann kann ich vielleicht besser helfen.
dieser kommentierte Quellcode würde mit entsprechender Anpassung für 1) und 2) funktionieren. Leider hattest du nicht angegeben, wohin kopiert werden soll. Die Einfügen-Routine muss also noch ergänzt werden:
Dim Zelle As Object
Sub Suchen()
'Für ganze Spalte S ausführen
For Each Zelle In Range(„S:S“)
'Nach „Name“ suchen
If Zelle.Value = „NAME“ Then
'Fundort addressieren
anfang = Zelle.Address
'Fundort auswählen
Range(anfang).Select
'Nach „System“ suchen
Do While ActiveCell.Value „SYSTEM“
'Eine Zeile weiterspringen
ActiveCell.Offset(1, 0).Select
Loop
'Zelle über Fundort addressieren
ende = ActiveCell.Offset(-1, 0).Address
'Zu kopierende Zeilen auswählen
Range(anfang, ende).EntireRow.Select
'Kopieren
Selection.Copy
’
'Hier muss jetzt noch eingefügt werden, wohin kopiert werden soll.
'Achtung: Es muss berücksichtigt werden, dass das Suchen und Kopieren
'für alle Fundorte von „Name“ ausgeführt wird! Es müssen also evtl. mehrere Ziele
'angegeben werden
’
End If
Next
Dim spalteP As Range, spalteS As Range, gefunden As Range, ziel As Range, zelle As Range
Sub x()
With Worksheets(„Tabelle1“)
Set spalteP = .Range(„P:stuck_out_tongue:“)
Set spalteS = .Range(„S:S“)
End With
With Worksheets(„Tabelle3“)
.Cells.ClearContents
Set gefunden = spalteP.Find(„NAME“)
Range(gefunden, spalteP.Find(„System“, gefunden)).EntireRow.Copy .Cells(1, 1)
Set ziel = .Cells(.UsedRange.Rows.Count + 1, 1)
For Each zelle In Worksheets(„Tabelle2“).Range(„A2:A3“)
Set gefunden = spalteS.Find(zelle.Text).Offset(0, -3)
Range(gefunden, spalteP.Find(„System“, gefunden)).EntireRow.Copy ziel
Set ziel = .Cells(.UsedRange.Rows.Count + 1, 1)
Next zelle
Dim spalteP As Range, spalteS As Range, _
gefunden As Range, ziel As Range, zelle As Range
With Worksheets(„Tabelle1“)
Set spalteP = .Range(„P:stuck_out_tongue:“)
Set spalteS = .Range(„S:S“)
End With
With Worksheets(„Tabelle3“)
.Cells.ClearContents
Set gefunden = spalteP.Find(„NAME“)
Range(gefunden, spalteP.Find(„System“, gefunden)).EntireRow.Copy .Cells(1, 1)
Set ziel = .Cells(.UsedRange.Rows.Count + 1, 1)
For Each zelle In Worksheets(„Tabelle2“).Range(„A2:A30“)
Set gefunden = spalteS.Find(zelle.Text).Offset(0, -3)
Range(gefunden, spalteP.Find(„System“, gefunden)).EntireRow.Copy ziel
Set ziel = .Cells(.UsedRange.Rows.Count + 1, 1)
Next zelle
leider fehlt die Angabe, wo was hinkopiert werden soll! Man kann zwar fleissig die Zeilen unter dem gefundenen Namen kopieren (inkl. der „Namenszeile“), aber wohin?
Sollen bei 2) die Suchwörter nacheinander abgearbeitet werden?
Ansonsten sind die Zauberwörter:
Schleife (FOR-Schleife oder WHILE-Schleife sollte hier genügen) und ggf. ein Zeilenindex (nenne ihn i oder Zeile). Der Vergleich dann mit IF … THEN…ELSE.
Eine komplette Lösung kann ich Dir nicht präsentieren, aber dieser Codeschnipsel zeigt wie man eine Suche durchführt, aus dem Ergebnis Adressen erzeugt, kopiert und einfügt.