Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
832to836
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
832to836
832to836
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Zellenbereich kopieren wenn Bedingung

Zellenbereich kopieren wenn Bedingung
05.01.2007 08:37:35
Daniel
Hallo!
Ich möchter per VBA( andere Lösungen kommen nicht in Frage) die Zellen A-H vom Blatt "Quelle" zum Blatt "Ziel" kopieren, aber nur wenn in L oder M eine 1 steht.
In "Ziel" sollen die Einträge fortlaufend stehen, also immer in der nächsten Zeile und es sollen nur Inhalte kopiert werden.
Wie muss so ein Makro aussehen. Habe davon leider wenig Ahnung.
Danke für Hilfe!
Daniel

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

Betreff
Datum
Anwender
Anzeige
AW: Zellenbereich kopieren wenn Bedingung
05.01.2007 09:43:41
Erich
Hallo Daniel,
wenn die Spalte N in "Quelle" frei ist und verwendet werden kann und wenn es keinen Autofilter gibt,
ginge das z. B. so:
Option Explicit
Sub Bestimmte_Saetze_kopieren()
' Quellspalten A bis M müssen in Zeile 1 Überschriften haben (ohne Lücken)
' Kopiert werden die Quellspalten 1 bis 8 der Zeilen,
'    in denen in Spalte L oder M (12 oder 13) die Zahl 1 steht.
' Quellspalte N (14) wird gelöscht.
Dim lngZ As Long
With Sheets("Quelle")
lngZ = .Cells(Rows.Count, 12).End(xlUp).Row
If lngZ < .Cells(Rows.Count, 13).End(xlUp).Row Then _
lngZ = .Cells(Rows.Count, 13).End(xlUp).Row
.Columns(14).Clear
.Cells(1, 14) = "xxx"
Range(.Cells(2, 14), .Cells(lngZ, 14)).FormulaR1C1 = "=((RC[-2]=1)+(RC[-1]=1))>0"
.Columns(14).AutoFilter
.Columns(14).AutoFilter Field:=1, Criteria1:=True
Range(.Cells(2, 1), .Cells(lngZ, 8)).Copy
End With
With Sheets("Ziel")
lngZ = .Cells(Rows.Count, 1).End(xlUp).Row + 1
.Cells(lngZ, 1).PasteSpecial Paste:=xlPasteValues, _
Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
End With
With Sheets("Quelle")
.Columns(14).AutoFilter
.Columns(14).Clear
End With
End Sub
Rückmeldung wäre nett! - Erich aus Kamp-Lintfort wünscht allen einen guten Start ins neue Jahr!
Anzeige
AW: Zellenbereich kopieren wenn Bedingung
05.01.2007 09:48:55
Daniel
Hallo Erich,
einen Filter will ich nicht benutzen. Die Struktur des Blatts und die Reihenfolge der Daten muss unbedingt beibehalten werden.
Die Spalte I ist außerdem leer.
Danke,
Daniel
AW: Zellenbereich kopieren wenn Bedingung
05.01.2007 09:54:40
Ramses
Hallo
Hast du den Beitrag von Erich überhaupt richtig gelesen ?
Ich empfehle:
Ausprobieren - Nachdenken - Dann Beitrag schreiben
Gruss Rainer
AW: Zellenbereich kopieren wenn Bedingung
05.01.2007 10:02:16
Daniel
Hallo Rainer, hallo Erich!
Ich bitte vielmals um Entschuldigung. Ich hatte das falsch verstanden und daher nicht ausprobiert.
Es geht aber wie gewünscht!!!
Vielen, Vielen Dank daher!
Daniel
Danke für Rückmeldung - und neue Version
05.01.2007 14:10:23
Erich
Hallo Daniel,
der Code war nur ein "Schön-Wetter"-Code - er läuft richtig, wenn in Spalte L oder M eine 1 steht, sonst produziert er Unsinn.
Deshalb hier eine verbesserte Version:
Option Explicit
Sub Bestimmte_Saetze_kopieren()
' Quellspalten A bis M müssen in Zeile 1 Überschriften haben (ohne Lücken)
' Kopiert werden die Quellspalten A-H (1-8) der Zeilen,
'    in denen in Spalte L oder M (12 oder 13) die Zahl 1 steht.
' Quellspalte N (14) wird gelöscht.
Dim lngZ As Long
With Sheets("Quelle")
lngZ = .Cells(Rows.Count, 12).End(xlUp).Row
If lngZ < .Cells(Rows.Count, 13).End(xlUp).Row Then _
lngZ = .Cells(Rows.Count, 13).End(xlUp).Row
If lngZ <= 1 Then Exit Sub
If WorksheetFunction.SumIf(Range(.Cells(2, 12), .Cells(lngZ, 13)), 1) = 0 Then Exit Sub
.Columns(14).Clear
.Cells(1, 14) = "xxx"
Range(.Cells(2, 14), .Cells(lngZ, 14)).FormulaR1C1 = "=1*(((RC[-2]=1)+(RC[-1]=1))>0)"
.Columns(14).AutoFilter
.Columns(14).AutoFilter Field:=1, Criteria1:=1
Range(.Cells(2, 1), .Cells(lngZ, 8)).Copy
End With
With Sheets("Ziel")
lngZ = .Cells(Rows.Count, 1).End(xlUp).Row + 1
.Cells(lngZ, 1).PasteSpecial Paste:=xlPasteValues, _
Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
End With
Sheets("Quelle").Columns(14).Clear
Sheets("Quelle").Columns(14).Clear
End Sub
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige

312 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige