Anzeige
Archiv - Navigation
1712to1716
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

Datensätze durch Bedingung filtern

Datensätze durch Bedingung filtern
24.09.2019 09:38:34
Nick
Hallo Leute,
ich bräuchte Mal eure Hilfe. Und zwar habe ich ein Makro vor mir, welches Daten aus einer Tabelle liest und in eine andere Tabelle schreibt.
Ich versuche das Makro dazu zu bringen, dass es den Code nur auf Zeilen anwendet, in denen ein bestimmtes Wort steht. Sagen wir das Wort lautet „Apfel“. Das Wort steht immer der gleichen Spalte. Die Spalte heißt immer gleich, in diesem Beispiel „Obstsorte“. Allerdings kann die Spalte „Obstsorte“ aus Gründen der Formatierung immer an einer anderen Stelle stehen, sei es nun Spalte P, V, AA, etc. Ich habe versucht, den Code abbrechen zu lassen, wenn nicht „Apfel“ oder ein Leerzeichen in einer Zelle der Spalte „Obstsorte“ steht, allerdings soll der Code ja weiterlaufen, weil eventuell weiter unten noch relevante Zellen mit „Apfel“ stehen. Meinen Lösungsansatz füge ich mal an und auch eine anonymisierte Tabelle, um es besser zu veranschaulichen.
Also in dieser angehangenen anonymisierten Tabelle soll er die Datensätze mit „Apfel“ am 01.01.2012 und am 23.01.2012 aus der Tabelle nehmen und in die andere Tabelle schreiben. Der Datensatz „Orange“ am 15.01.2012 soll ignoriert werden, genauso wie die leeren Zeilen über dem ersten Datensatz „Apfel“. Die Datumsangaben sind in diesem Beispiel der Spalte K zu entnehmen.
Ich hoffe, dass ich mein Problem gut schildern konnte.
LG Nick
https://www.herber.de/bbs/user/132158.xlsx
' Obstsorten filtern
Dim Treffer1 As Range
With Tabelle1
Set Treffer1 = Rows(2).Find(what:="obstsorte", lookat:=xlWhole)
Dim Obstsorte As Range
Set Obstsorte = .Rows(1).Find(what:="Obstsorte", lookat:=xlWhole)
If Treffer1 "Apfel" Or Treffer1 "" Then
End Sub
Else
End If

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Datensätze durch Bedingung filtern
24.09.2019 10:04:40
Daniel
Hi
so in der Art?
Sub test()
With ActiveSheet.UsedRange
.AutoFilter field:=Rows(2).Find("Obstsorte").Column, Criteria1:="Apfel"
.Copy Destination:=Sheets(2).Cells(1, 1)
End With
End Sub
die Tabelle muss in Spalte A beginnen, ansonsten müsste man die Spaltennummer noch umrechnen auf die Position innerhalb der gefilterten Tabelle.
Gruß Daniel
AW: Datensätze durch Bedingung filtern
24.09.2019 10:55:29
Nick
Danke Daniel, aber das funktioniert leider nicht.
Vielleicht habe ich mein Problem schlecht beschrieben. Ich möchte die Bedingung in ein bestehendes Makro einbauen, quasi an den Anfang des Makros setzen. Das Abbrechen des Makros war ein erster Ansatz von mir, der in diesem Fall vermutlich nicht sinnvoll ist.
Ich möchte nur zu Beginn die Bedingung einfügen, dass der restliche Teil des Makros nur auf die Zeilen angewendet wird, in denen das Schlagwort steht. Zeilen mit anderslautenden Wörtern sollen ignoriert werden. Wenn ich das Makro so laufen lasse, wie es zurzeit ist, kopiert es einfach alle Datensätze und schreibt sie in das andere Arbeitsblatt, also nicht nur die Äpfel, sondern auch die Orangen. Der Rest des Makros läuft ja einwandfrei, nur die Bedingung soll eingefügt.
VG Nick
Quasi:
Sub test()
' Hier werden leere Spalten gelöscht
' Hier soll die Bedingung eingefügt werden, dass der weitere Teil des Makros nur auf die Äpfel angewendet wird
' Ab hier soll das Makro wie gewohnt weiterlaufen
Anzeige
AW: Datensätze durch Bedingung filtern
24.09.2019 11:36:44
Daniel
Hi
das kommt jetzt darauf an, was du machst.
beim Copy-Paste und sonstigen Bearbeitungsschritten von Zellblöcken bearbeitet Excel normalerweise nur die eingeblendeten Zeilen.
außer du bearbeitest in einer Schleife jede Zeilen einzeln, dann musst du selber prüfen
in dem Fall müsstest du dir die Spaltennummer der Obstorte in einer Variable speichen
und dann die jeweilige Zelle prüfen:
spObst = Rows(2).Find(what:="Obstsorte").Column
for z  = 3 to letzteZeile
If Cells(z, spObst) = "Apfel" then
--- hier der Code zum Bearbeiten der Zeile
end if
next

Gruß Daniel
Anzeige
AW: Datensätze durch Bedingung filtern
24.09.2019 13:42:30
Nick
Hmm, vermutlich bin ich zu blöd dafür, die Funktion korrekt einzubauen. Bin halt absoluter Neuling. Gibt es da denn alternative Lösungsansätze? Habe ich das Problem adäquat erklären können oder gibt es da noch offene Fragen?
Da ich den Code nicht einfach veröffentlichen darf, versuche ich mal das Vorgehen präziser zu beschreiben, unter der Prämisse, dass wir von der anonymisierten Tabelle ausgehen.
Das Makro prüft nacheinander ob bestimmte Spalten existieren (A-E und K-O). Wenn diese Spalten existieren, kopiert er die Datensätze und fasst alle Daten von einem Tag zu einem Datensatz zusammen, indem er die doppelten Zeilen löscht. Das Vorgehen in den einzelnen Spalten sieht ähnlich dem aus, was ich als ersten Lösungsansatz von mir veröffentlicht habe.
Bisher wird die Spalte F (Obstsorte) gar nicht beachtet, obwohl nur Äpfel relevant sind und nur diese Datensätze kopiert werden sollen.
Gruß Nick
Anzeige
AW: Datensätze durch Bedingung filtern
24.09.2019 13:46:26
Daniel
Hi
hilfreich wäre eine Beispieldatei, in welcher du zeigst
1. wie die Daten zu beginn vorliegen
2. wie du dir das Ergebnis vorstellst
3. welchen Code du schon hast, welches Ergebnis er liefert und was anders sein soll.
Gruß Daniel

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige