Anzeige
Archiv - Navigation
1436to1440
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

VBA Schleife mit zwei Bedingungen?

VBA Schleife mit zwei Bedingungen?
21.07.2015 13:37:40
Michael
Hallo Forum,
ich suche die Möglichkeit mittels einer Schleife oder dergleichen mir aus einer Tabelle Werte in eine andere kopieren zu können wenn zwei Bedingungen erfüllt sind. Einmal soll in einer Spalte geprüft werden ob der Wert <0 ist und dann in einer anderen ob das Wort "False" drin steht. Wenn Beides erfüllt ist sollen bestimmte Zellinhalte in eine andere Arbeitsmappe kopiert werden. Darüber mache ich mir jedoch erst später Gedanken.
Wie müsste man das im Code umsetzen?
Ich bin für jeden Tipp dankbar!
Gruß
Michael

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

Betreff
Datum
Anwender
Anzeige
AW: VBA Schleife mit zwei Bedingungen?
21.07.2015 13:55:47
Daniel
Hi
prinizpell macht man das in Excel ohne Schleife.
man filtert mit dem Autofilter in den entsprechenden Spalten und kopiert dann die Zellen in die andere Arbeitsmappe.
Hierbei nutzt man aus, dass in gefilterten Tabellen nur die sichtbaren Zeilen kopiert werden.
In VBA funktioniert das genauso.
Schleifen über einzelne Excelzellen sind in VBA recht langsam.
Daher sollter man sie vermeiden und versuchen, wenn möglich die Zellen als Block in einem Schritt zu bearbeiten. in diesm Fall hilft dir hierbei der Autofilter.
Gruß Daniel

AW: VBA Schleife mit zwei Bedingungen?
21.07.2015 14:02:07
Rolf
Hallo Michael,
Falls du doch VBA willst:
Sub roro()
For i = 1 To 10
If Cells(i, 1) > 4 And Cells(i, 2) = "wert" Then
Cells(i, 4) = "Prima!"
End If
Next
End Sub

Gruß Rolf

Anzeige
AW: VBA Schleife mit zwei Bedingungen?
21.07.2015 14:09:54
Michael
Danke erstmal für den Tipp Daniel.
Ich weiß jedoch nicht ob das mit dem Filter in meinem Fall so eine gute Lösung ist, denn:
-ich will nicht ganze Blöcke zwischen Arbeitsmappen kopieren sondern nur bestimmte Zellen, denn die Formatierung unterscheidet sich deutlich.
-Ich will nicht alles kopieren sondern nur bestimmte Zellen innerhalb einer Zeile wo die Bedingungen erfüllt sind und diese in bestimmte Zellen in der anderen Arbeitsmappe einfügen.
-Das größte Problem sehe ich jedoch darin, dass ich das Einfügen in der neuen Arbeitsmappe fest definieren will. D.h. ich will zB sagen, Wenn die Bedingung erfüllt ist kopiere mir aus dieser Zeile die Zelle XYZ in die Zelle XYZ der anderen Mappe. Doch was mache ich wenn die Bedingungen in mehreren Zeilen erfüllt werden. Diese sollen nacheinander kopiert und in die neue Arbeitsmappe eingefügt werden, die Zellen in der neuen Arbeitsmappe sind aber nicht zwingend untereinander, sondern vielleicht 3 Zellen unter der wo der erste Eintrag rein kopiert wurde. Vielleicht geht das mit Offset?
Das ist ein größeres Projekt, ich will mich quasi von Problem zu Problem hangeln.
Gruß

Anzeige
AW: VBA Schleife mit zwei Bedingungen?
21.07.2015 14:07:04
UweD
Hallo
wenn doch Makro, dann so..
Sub kopieren()
Dim SP1, SP2, ZE As Integer
Dim LR1, LR2, i As Double
Dim TB1, TB2, WB
Set TB1 = ActiveSheet
'muss geöffnet sein; Name anpassen
Set TB2 = Workbooks("Test.xlsx").Sheets(1)
SP1 = 1 'Spalte A Erste Spalte, die berücksichtigt werden soll
SP2 = 3 'Spalte C
ZE = 2 'Erste Zeile, wegen Überschrift
LR1 = TB1.Cells(Rows.Count, SP1).End(xlUp).Row 'letzte Zeile der Spalte
For i = ZE To LR1
If TB1.Cells(i, SP1) > 0 And TB1.Cells(i, SP2) = "False" Then
LR2 = TB2.Cells(Rows.Count, SP1).End(xlUp).Row
'Kopieren
TB1.Rows(i).Copy TB2.Rows(LR2 + 1)
End If
Next i
End Sub

Gruß UweD

Anzeige
AW: VBA Schleife mit zwei Bedingungen?
21.07.2015 14:24:44
Michael
Danke Uwe!
Ich blicke jedoch nicht ganz durch:
Sub kopieren()
Dim SP1, SP2, ZE As Integer
Dim LR1, LR2, i As Double
Dim TB1, TB2, WB
Set TB1 = ActiveSheet
Set TB2 = Workbooks("Test.xlsx").Sheets(1)
SP1 = 15 'Spalte O
SP2 = 33 'Spalte AG
ZE = 3 'Erste Zeile die bei mir mit Werten beginnt, da Tabelle erst ab Zeile 2 beginnt
LR1 = TB1.Cells(Rows.Count, SP1).End(xlUp).Row 'letzte Zeile der Spalte
For i = ZE To LR1
If TB1.Cells(i, SP1) > 0 And TB1.Cells(i, SP2) = "False" Then
LR2 = TB2.Cells(Rows.Count, SP1).End(xlUp).Row 'Was genau macht dieser Code in der  _
anderen Mappe?
TB1.Rows(i).Copy TB2.Rows(LR2 + 1) 'das verstehe ich auch nicht ganz. Ich sehe  _
nirgends ein paste und auch keine vorher definierten Zellen wo das ganze rein kopiert werden soll?
End If
Next i
End Sub
Du kopierst ganze Zeilen in deinem Code, geht das auch mit bestimmten Zellen aus der selben Zeile?
Gruß
Michael

Anzeige
AW: VBA Schleife mit zwei Bedingungen?
21.07.2015 14:43:06
UweD
Hallo
LR2 = TB2.Cells(Rows.Count, SP1).End(xlUp).Row 'Was genau macht dieser Code in der _
anderen Mappe?

=> findet die Letzte benutze Zeile in der Sammeldatei, und würde in die Nächste Zeile die Daten reinkopieren
TB1.Rows(i).Copy TB2.Rows(LR2 + 1) 'das verstehe ich auch nicht ganz. Ich sehe _
nirgends ein paste und auch keine vorher definierten Zellen wo das ganze rein kopiert werden soll?

TB1.Rows(i).Copy TB2.Rows(LR2 + 1)
von____________| |______nach______

nur einzelne Zellen geht auch so...
z.B.
TB1.Range("A" & i).Copy TB2.cells(LR2 + 1,1)

hier mal eine Mischung aus Range() und Cells(Zeile,Spalte)
Gruß UweD

Anzeige
AW: VBA Schleife mit zwei Bedingungen?
21.07.2015 14:49:13
Michael
Danke Uwe, ich versuche das Ganze mal umzusetzen!
Gruß

209 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige