Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA: Datenbereich nach Bedingung kopieren

VBA: Datenbereich nach Bedingung kopieren
27.07.2018 11:17:47
Imke
Hallo zusammen,
ich habe mich heute bereits einige Zeit durch das Forum und andere Internetseiten gewälzt und denke mittlerweile, die Lösung zu meinem Problem ist sicherlich ganz einfach. Da ich aber mit VBA bis heute noch nie zu tun hatte, tue ich mich dennoch sehr schwer.
Die Ausgangssituation:
Ich habe eine Datei mit Tabelle1 und Tabelle2
Tabelle 1 hat eine Tabelle mit Werten in den Spalten A bis E (die Zeilenanzahl ist variabel, sollte also über eine Abfrage ermittelt werden). Immer wenn die Zelle in Spalte E nicht leer ist, soll mir das Makro die Daten von A bis E in eine neue Zeile bei Tabelle2 kopieren.
Nach einiger Mühe konnte ich mir ein VBA zurechtbasteln, welches diese Aufgabe übernimmt, allerdings kopiert es die gesamte Zeile. Da ab Spalte F in Tabelle2 allerdings Formeln hinterlegt sind, soll mir das Makro besser nur Spalte A bis E kopieren. Leider komme ich mit dieser Range-Funktion nicht zurecht und erbitte deshalb Hilfe von euch Profis.
Liebe Grüße
Meine bisherige Errungenschaft:

Sub BedingteKopieZeilen()
Dim Zeile As Long
Dim ZeileMax As Long
Dim n As Long
With Tabelle1
ZeileMax = .UsedRange.Rows.Count 'die letzte Zeile wird ermittelt
n = 1
For Zeile = 2 To ZeileMax
If .Cells(Zeile, 5).Value  "" Then
.Rows(Zeile).Copy Destination:=Tabelle3.Rows(n)
n = n + 1
End If
Next Zeile
End With
End Sub

Beispiel-Mappe:
https://www.herber.de/bbs/user/122948.xlsx

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA: Datenbereich nach Bedingung kopieren
27.07.2018 13:13:57
Torsten
Hallo Imke,
kleiner Hinweis zuerst: Die Tabellennamen, sofern nicht als Variable deklariert muessen in "" geschrieben werden (s. Code).
Dann versuch mal diesen angepassten Code
Sub BedingteKopieZeilen()
Dim Zeile As Long
Dim ZeileMax As Long
Dim n As Long
With Sheets("Tabelle1")
ZeileMax = .UsedRange.Rows.Count 'die letzte Zeile wird ermittelt
n = 2
For Zeile = 2 To ZeileMax
If .Cells(Zeile, 5).Value  "" Then
.Range("A" & Zeile & ":E" & Zeile).Copy Destination:=Sheets("Tabelle3").Rows(n)
n = n + 1
End If
Next Zeile
End With
End Sub
Gruss Torsten
Anzeige
AW: VBA: Datenbereich nach Bedingung kopieren
27.07.2018 13:17:48
Torsten
ach ja, hab noch was vergessen zu erwaehnen. Ich habe die Variable "n" auf 2 gesetzt am Anfang, da du sonst in der Zieltabelle die Ueberschrift ueberschreibst.
AW: VBA: Datenbereich nach Bedingung kopieren
31.07.2018 08:21:25
Imke
Hallo Torsten,
vielen herzlichen Dank. Das Makro funktioniert nun wie gewünscht.
Ebenfalls danke für das umstellen der Reiter-Adressierung, ich hatte der Einfachheit halber ja lediglich Worksheet1, Worksheet2 etc. genommen,was später eventuell zu Fehlern hätte führen können. Das namentliche Ansprechen der Tabellenblätter ist dann doch eindeutiger.
Grüße,
Imke
AW: VBA: Datenbereich nach Bedingung kopieren
01.08.2018 10:44:15
Imke
Hallo nochmal,
ich bin gerade dabei in meiner Date die Dinge weiter umzustellen um mit Makros die potenziellen Fehlerquellen bei manuellem Kopieren zu verringern. Dafür benötige ich wieder eure wertvolle Profi-Hilfe.
Die Ausgangssituation:
Ich habe meine Daten bereits in dem Tabellenblatt "Differenz" stehen und möchte aus dem Tabellenblatt "System" die dazugehörigen Stückzahlen in die Spalte "Anzahl2" kopieren. Dies ist mir dank Umstellen eines Makros,das ich hier gefunden habe auch gelungen. (ohne,dass er die Formatierung übernimmt, was mir auch so gefällt). Nun ist es aber leider so, dass in dem Tabellenblatt "System" MEHR Daten als in "Differenz" stehen können. Diese sollen dann an das Ende der Tabelle in "Differenz" hinzukopiert werden, bevor mein Makro für die Spalte "Anzahl2" läuft.
Was ich benötige:
Makro fragt die letzte Zeile in "Differenz" ab +1 (erste leere Zeile)
Makro prüft die Bedingung: Ist die Zellenkombination A+C aus Tabelle "System" bereits in der Tabelle "Differenz" vorhanden?
Ja - dann prüfe die nächste Zeile
Nein - dann füge A bis D in die erste freie Zeile ein
Ich hänge euch meine Beispieldatei wieder an und werde mich parallel auch weiter an dem Makro probieren. Da ich aber wie erwähnt bisher keine Berührungspunkte mit VBA hatte, fällt mir das alles sehr schwer.
https://www.herber.de/bbs/user/123036.xlsm
Liebe Grüße
Anzeige

327 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige