Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Excel vba: Logik Test, wahr wenn mehrere Zeilen

Excel vba: Logik Test, wahr wenn mehrere Zeilen
14.10.2018 14:14:50
Mowz
Liebes Foren-Team,
ich bin ein absoluter vba-Neuling und habe eine schätzungsweise ziemlich triviale Frage.
Kurzversion:
Nachdem ich eine Tabelle gefiltert habe, möchte ich die Einträge in ein neues Sheet kopieren, allerdings nur, wenn nach der Filterung mehr als ein Eintrag besteht.
Mein bisheriger Ansatz:
If Cells(3, 3).Offset(1,0).Value 0 Then Range("B2:D2").Select Else Application.Selection = False
Range(Selection, Selection.End(xlDown)).Copy _
Workbooks("Mehrfachfilterung.xlsm").Worksheets("Ergebnisse").Range("A1")
misslingt leider komplett.
Ausführlich:
Mein prinzipielles Ziel besteht darin, eine Excel Tabelle iterativ nach allen möglichen Einträgen zu filtern. Wenn nach der Filterung mehr als eine Zeile befüllt ist möchte ich die Ergebnisse in ein seperates Sheet kopieren. Außerdem ist es nötig, dass die kopierten Einträge untereinander eingefügt werden. Wenn mir da noch jemand helfen könnte, wäre auch das kommende Übel bereinigt.
Meine kompletten (verzweifelten) Coding-Versuche lauten:
Sub MehrfachFilterung()
Dim FilterAuswahl As String
Dim X As Integer
Worksheets("Roh").Select
Range("B2").Select
X = 0
'Variable Definieren und Schleife starten
Do While ActiveCell.Value  0
FilterAuswahl = ActiveCell.Value
X = X + 1
'Löscht bestehende Filter und filtert nach Wert der Variable, Name der Tabelle evtl. definieren  _
ANPASSEN
ActiveSheet.ListObjects("Tabelle1").Range.AutoFilter Field:=1, Criteria1:=FilterAuswahl
'Gefilterte Einträge auswählen und kopieren
'If Cells(3, 3).Offset(1,0).Value  0 Then Range("B2:D2").Select Else Application.Selection =  _
False
Range(Selection, Selection.End(xlDown)).Copy _
Workbooks("Mehrfachfilterung.xlsm").Worksheets("Ergebnisse").Range("A1")
'Workbooks("Mehrfachfilterung.xlsm").Worksheets("Ergebnisse").Cells(Worksheets("Ergebnisse") _
.Rows.Count, 1).End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlValues.Application.CutCopyMode = False
'Wieder Datenblatt auswählen
Worksheets("Roh").Select
'Filter wieder löschen
ActiveSheet.ListObjects("Tabelle1").Range.AutoFilter Field:=1
'Setzt Variable auf den nächsten Wert
ActiveCell.Offset(X, 0).Select
Loop
End Sub
Über Hilfe wäre ich extrem dankbar!
PS: Eine Literaturempfehlung mit möglichst vielen Anwendungsbeispielen für vba-Anfänger würde mich sehr freuen.
Vielen Dank und einen Schönen Sonntag

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Excel vba: Logik Test, wahr wenn mehrere Zeilen
14.10.2018 17:28:19
Piet
Hallo
Ich habe den Code mal getestet. Bei Application.Selection = False erscheint "Falsch" in der Zelle.
Probier bitte mal den unteren Code. Auf lz2 + lz3 kann verzichtet werden wenn man weiss welche Spalte die meisten Daten enthaelt? Ist das unbestimmt dann in 3 Spalten die LastZelle suchen!
Würde mich freuen wenn es so klappt.
mfg Piet
Sub test_Mowz()
If Cells(3, 3).Offset(1, 0).Value  0 Then
lz1 = Cells(Rows.Count, 2).End(xlUp).Row
lz2 = Cells(Rows.Count, 3).End(xlUp).Row
lz3 = Cells(Rows.Count, 4).End(xlUp).Row
If lz2 > lz1 Then lz1 = lz2
If lz3 > lz1 Then lz1 = lz3
Range("B2:D2").Resize(lz1 - 1, 3).Copy _
Workbooks("Mehrfachfilterung.xlsm").Worksheets("Ergebnisse").Range("A1")
End If
End Sub

Anzeige

333 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige