Excel VBA – Bestimmte Zeilen in eine andere Tabelle kopieren
Dieser Beitrag ist ein Teil der VBA Grundlagen Serie.
In diesem How To zeige ich Ihnen wie Sie bestimmte Zeilen in eine andere Tabelle kopieren können. Wir haben eine Liste mit verschiedenen Artikeln. Manche von ihnen sind vergriffen. Wir wollen die verfügbaren Artikel in eine neue Tabelle kopieren.
Dafür legen wir ein VBA Makro an. Zunächst definieren wir Variablen für die Zeilen. Zeile
und ZeileMax
sind für die Schleife notwendig. Mit der Variable n
bestimmen wir die Zeile der Zieltabelle die wir füllen werden.
Sub BedingteKopieZeilen() Dim Zeile As Long Dim ZeileMax As Long Dim n As Long End Sub
Dann geben wir an mit welcher Tabelle wir arbeiten wollen und ermitteln wie viele Zeilen in dieser Tabelle gefüllt sind. Die Variable n
setzen wir initial auf 1. (Als erstes wird in die Zeile 1 kopiert.)
With Tabelle1 ZeileMax = .UsedRange.Rows.Count n = 1 End With
111 VBA Makros die Ihr Leben leichter machen
Wollen Sie Ihre langweiligen Routineaufgaben loswerden? Möchten Sie Excel an Ihre Bedürfnisse anpassen, Berechnungen automatisieren, eigene Dialogfelder erstellen und vieles mehr? Dieses Buch zeigt Ihnen, wie Sie Ihre Aufgaben schnell und einfach mit VBA erledigen.
Als nächstes setzen wir die Schleife auf. Innerhalb der Schleife prüfen wir ob in der jeweiligen Zeile in der Spalte C der Wert „Ja“ steht. Wenn die Bedingung zutrifft, dann kopieren wir die ganze Zeile über die Methode Copy
. Als Ziel geben wir die n-te Zeile der Tabelle2 an. Danach müssen wir die Laufvariable n
um eins erhöhen. Damit wird beim nächsten Kopiervorgang die nächste Zeile gefüllt.
For Zeile = 2 To ZeileMax If .Cells(Zeile, 3).Value = "Ja" Then .Rows(Zeile).Copy Destination:=Tabelle2.Rows(n) n = n + 1 End If Next Zeile
Führen Sie Ihr Makro aus. In Tabelle2 erscheinen nun die verfügbaren Artikel.
Das gesamte Makro:
Sub BedingteKopieZeilen() Dim Zeile As Long Dim ZeileMax As Long Dim n As Long With Tabelle1 ZeileMax = .UsedRange.Rows.Count n = 1 For Zeile = 2 To ZeileMax If .Cells(Zeile, 3).Value = "Ja" Then .Rows(Zeile).Copy Destination:=Tabelle2.Rows(n) n = n + 1 End If Next Zeile End With End Sub
Die Beispiel Excel Datei mit dem sofort einsetzbaren Makro und 111+ andere Makros, die Ihr Leben leichter machen, finden Sie hier.
Beeindrucke deinen Chef mit coolen Excel Tricks!
- Lasse dich von deinen Kollegen nicht abhängen!
- Spare Zeit und nutze diese für angenehmere Dinge
- Steigere deine Produktivität und Effizienz
- Es ist leicht - In meinem Newsletter gebe ich Schritt für Schritt Anleitungen die jeder versteht
- Bei der Anmeldung zu meinem Newsletter erhälst du das Buch „Excel Tricks die deinen Chef beeindrucken“ als Willkommensgeschenk.
Quellen und weiterführende Literatur:
Bernd Held – VBA mit Excel: Das umfassende Handbuch
Falls Ihnen dieser Beitrag weitergeholfen hat, wäre es eine sehr nette Anerkennung meiner Arbeit wenn Sie z.B. Ihre Bücher über Amazon bestellen würden. Wenn Sie ein Produkt kaufen, erhalte ich dafür eine Provision. Für Sie ändert sich am Preis des Produktes gar nichts. Ich möchte mich an dieser Stelle jetzt schon für Ihre Unterstützung bedanken.
Vielen Dank! Das ist hier sehr gut erklärt!
Ich beschäftige mich erst seit wenigen Tagen mit VBA, kenne mich aber sonst ganz gut mit Excel aus. Ich habe heute den ganzen Tag nach einem Weg gesucht, bestimmte Zeilen einer Tabelle (bis zur Zeile 140) in die gleiche Tabelle (ab Zeile 150) zu kopieren, bin daran aber grandios gescheitert.
Vor allem die Beiträge aus Foren, die das gefundene Ergebnis gerne in die erste freie Zeile der gleichen Tabelle kopieren wollen, ließen sich für mich einfach nicht wie gewünscht abändern (Ich glaube mittlerweile verstanden zu haben, dass dies auch nicht so ohne weiteres geht).
In ihrem Beitrag ist die Programmierung Schritt für Schritt gut erklärt. Und der Code kommt mit erstaunlich wenig Programmier-Zeilen aus. So habe ich schnell die Stellschrauben, an denen sich drehen lässt gefunden. Das ging in 30 Minuten!
Sehr empfehlenswert!
Ich werde mir ihr Buch bestimmt kaufen.
Gerne auch wie gewünscht über Amazon.
Nochmals vielen Dank.
Freut mich sehr. Das Buch ist zwar nicht von mir, aber trotzdem empfehlenswert :)
Viele Grüße
Denis
Leider funktioniert der Code bei mir nicht ich habe 2 Tabellenblätter einmal Übersicht und einmal Bank in Spalte 2 des Tabellenblattes soll er nach dem Begriff „Bank“ suche sollte er da sein komplette Zeile mit Inhalt „Bank“ kopieren.
Allerdings gibt er mir eine fehlermeldung zurück da er mit dem Punkt vor Rows (n)
In der Zeile
.Rows (Zeile). Copy Destination:=“Bank“.Rows(n)
Nicht einverstanden ist Da kommt eine Fehlermeldung erwartet anweisungsende? ???
Entschuldig er soll von Übersicht nach Bank Kopieren.
Hallo Andrew, geht es um eine ähnliche Aufgabenstellung wie beim Thorsten? Da habe ich ein Beispiel erstellt. Hoffe, dass es hilft.
Ansonsten probier mal „Bank“ ohne „“, wenn die Tabelle in VBA Eigenschaften so heißt.
Wenn es nur die Beschreibung ist (und die Tabelle in VBA Eigenschaften Tabelle2 oder ähnlich heißt), versuche es bitte mit Sheets(„Bank“).Rows(n).
Viele Grüße
Denis
Hallo :)
Ich muss ebenfalls aus einer Tabelle (Eingabe sheet) Daten in andere Tabellen (Januar Februar usw) übertragen. Das soll automatisch über ein Button erfolgen.
Mein Problem ist, dass die Übertragung anhand mehrerer Kriterien erfolgen muss (anhand des Monats und anhand der Produktlinie)
Produktlinie wird im Eingabe sheet über eine drop down liste ausgewählt.
Das heißt die Person wählt die Produktlinie aus (Monat wird automatisch ausgefüllt) macht seine manuellen Eingaben und dann klickt er auf den Button, die Daten werden übertragen und dann wählt er die nächste Produktlinie. Jede Tabelle mit dem Monat (Januar usw) hat in unterschiedliche Spalten die unterschiedlichen Produktlinien.
Kann mir jemand hierzu helfen ? Ich komme nicht weiter (da ich keine Ahnung von Makros und VBA habe)
Viele Grüße
Hallo Herr Reis,
ich befasse mich ebenfalls seit wenigen Tagen mit VBA.
Was ich interessieren würde ist folgendes Szenario:
Angenommen es gibt mehrere gleiche Artikel in Spalte A mit unterschiedlichen Mengen in Spalte B. Kann ein VBA Code so programmiert werden das die unterschiedlichen Artikel erkannt und in andere Tabelle kopiert werden?
Hallo Herr Zedler,
verstehe die Aufgabenstellung noch nicht ganz. Sollen nur die einmaligen Artikel kopiert werden? Also jedes Artikel nur ein Mal? Oder geht es darum die Mengen zu kopieren? Da könnte man das obige Makro anpassen, dass die Spalten mit dem Artikel als Bedingung gelten. Kopiert wird dann die ganze Zeile.
Viele Grüße
Denis
Guten Morgen Herr Reis,
es sollen alle Zeilen kopiert werden die den selben Bezug (Text und Zahlen z.B. 5B2 oder 18A1-CON15-4,…) in der Spalte K haben.
Bsp.
Angenommen Spalte K hat über 1000 Werte und für jeden unterschiedlichen Text soll ein neues Tabellenblatt geöffnet und alle dazugehörigen Zeilen kopiert werden.
Die Werde in Spalte K sind aber Variabel und müssten „so denke ich“ vorher durchsucht, erkannt, zwischengespeichert und kopiert werden.
Ich hoffe das die Erklärung besser ist ansonsten kann ich ihnen auch gerne eine Datei zusenden.
VG
Oliver Zedler
Hallo Herr Zedler,
Sie könnten ja die Werte in der Spalte K sortieren. Dann fangen Sie an diese in ein anderes Tabellenblatt zu kopieren. Dabei vergleichen Sie immer ob der Wert in Spalte K derselbe ist. Wenn sich der Wert ändert, machen Sie ein neues Tabellenblatt auf und kopieren in den diesen weiter.
Viele Grüße
Denis
Danke für diesen Denkanstoß :-) Dann wird ich mich mal an die Arbeit machen recherchieren und versuche das umzusetzen.
Ihre Erklärungen hier sind sehr übersichtlich und verständlich großen Lob.
Vielen Dank
Gruß
Hallo her Reis, gibt es eine Möglichkeit sie auch anderweitig zu kontaktieren ich bin leider seit 4 Jahren Arbeitssuchend und daher aus der
Übung
das MS ofice betrifft hab eine Frage zur Bedingten Formatierung
Hallo Denis ich hab mal eine Frage ich hab den vba Code jetzt in meiner Datei so modifiziert das im im Tabellenblatt Übersicht nach dem Begriff Bank in Spalte 2 nach dem Begriff Bank sucht die komplette Zeile dann in das Tabellenblatt Bank kopiert. Das ist so richtig. Danke schon mal dafür das gleiche soll er es jetzt für 3 weitere Tabellenblätter machen wenn ich das Makro also kopiere (3mal) und die Parameter entsprechend aufauf „Portmonee“, „Geldkassette“ „Sparbuch“ dazugehörigen
Tabellenblätter
„Portmonee“, „Geldkassette“ „Sparbuch“ ändere legt Excelmir 4 makros was mach ich falsch geht das nicht in ein Makro da iCh dieses mit einem Button verknüpfen und nicht jedes mackro einzeln aufrufen möchte, haben sie eine Idee?
Gruß
Andrew
Hallo Andrew, warum nicht alle vier Arbeitsblätter in einem Makro abfrühstücken? Einfach den Code Kopieren und
With Tabelle1
ersetzen,With Tabelle2
usw. Quick and dirty :)Guten Tag Herr Reis,
ich beschäftige mich, im Auftrag meiner Firma, seit einigen Tagen auch wieder mit dem Thema VBA.
Ich hatte damals in meinem Studium auch EDV, davon ist aber leider nicht mehr viel hängen geblieben. Ich hoffe, Sie können mir bei folgendem Problem helfen.
Situation:
Ich habe eine Liste von Firmenkunden (ca. 500 unterschiedliche, unterteilt in Branchen) in der Mappe1.
Ich möchte nun in Mappe2 nur die Kunden ausgeben, die ich in Mappe1 mit „x“ gekennzeichnet habe, und am besten mit Branche. Es sollte dann wie folgt in Mappe2 aussehen:
Branche 1
Kunde Nr.12
Kunde Nr.45
Branche 2
Kunde Nr.67
usw.
Ich habe schon überlegt ob ich in Mappe1 eine Schaltfläche einbaue, und zwar mit dem Auftrag: “ Alle Zeilen, die mit „X“ gekennzeichnet sind, in Mappe2 übertragen“.
Quasi scroll ich so den Kundenstamm durch, markiere die passenden Kunden an, scroll wieder hoch, klicke auf den Button, und in Mappe2 erscheinen automatisch nur die Kunden, die ich brauche. Ist das so möglich?
Ich hoffe Sie können mir da weiter helfen
MfG
Tobias Hanses
Hallo Herr Hansens,
steht die Branche in derselben Zeile wie der Kunde? Wenn Sie das hier vorgestellte Makro anpassen erreichen Sie das gewünschte Ergebnis. Sie könnten dann die rüberkopierten Kunden noch nach Branchen filtern.
Viele Grüße
Denis
Guten Tag Herr Reis,
zunächst einmal Danke für Ihre Vorlage. Ich möchte diese gerne erweitern, da ich mit drei Tabellenblättern arbeite stehe ich vor folgendem Problem. Im ersten Tabellenblatt erfolgt in einer Zeile die Eingabe einer Zahlenkombination, diese soll entsprechend im zweiten Tabellenblatt, welches die Datensätze enthält gesucht werden und Analog zu Ihrem Beispiel in ein neues Tabellenblatt kopiert werden.
Allersdings stehe ich hierbei auf dme Schlau wie die folgende Zeile „If .Cells(Zeile, 3).Value = „Ja“ Then“ abzuändern ist, dass anstatt des „Ja“ entsprechend die Zelle des ersten Tabellenblattes ausglesen wird und im Anschluss gesucht wird.
Vielen herzlichen Dank
Mfg Christian Kokernak
Versuchen Sie es mal statt „Ja“ mit Tabelle1.Range(„[A1]“).Value
In die eckigen Klammer die tatsächlichen Namen eingeben.
Vielleicht hilft dieser Beitrag. https://www.denisreis.com/excel-vba-eigene-suchfunktion-bauen-bestimmte-zeile-finden/
Oder ActiveWorkbook.Worksheets(„[Tabellenblatt]“).Cells([Zeile],[Spalte]).Value
Guten Morgen,
ich bin nach langer Suche auf diese Formel gestoßen und hoffe durch Sie mein Problem lösen zu können.
Ich möchte die Formel gerne dafür nutzen Inhalte aus 8 verschiedenen Tabellenblättern in ein neues kopieren zu können.
Der Aufbau der 8 Tabellenblätter ist identisch: Datum – Aufgabe- Zieltermin- Zuständigkeit. Jedes Tabellenblatt steht für ein eigenes Thema. (z.B. operativ, strategisch, Kontrolle etc.)
Jetzt möchte ich alle Aufgaben, für die Person A zuständig ist, gesammelt in ein neues Tabellenblatt kopieren. Möglichst so, dass sich bei Eintragungen auf Blatt 7 diese Auflistung automatisch erweitert.
Wie kann ich dies tun, ohne dass sich die kopierten Zeilen gegenseitig überschreiben?
Kann ich die oben genannte Formel einfach auf alle 8 Blätter anwenden, oder muss ich Sie umschreiben?
Vielen Dank und Liebe Grüße
Anna
Hi Anna,
kann man sicherlich machen, einfach die anderen Tabellen unten anhängen und die Variable n weiter zählen.
Aber wäre es nicht einfacher, die 8 Tabellenblätter in einen Blatt zu kopieren und das Makro darüber laufen zu lassen?
Warum so kompliziert, wenn es auch einfach geht? :)
Viele Grüße
Denis
Hallo Denis,
diese Erklärung von Dir hat mir auch sehr weitergeholfen – Super!
Nun habe ich aber das Problem, dass ich aus Tabellenblatt 1 nur bestimmte Spalten kopieren muss und diese auch noch in andere Spalten einfügen soll. Kannst Du mir da weiterhelfen?
Gruß André
Hallo André,
Sind es immer dieselben Spalten? Wie schaut es konkret aus?
Kannst du ein Beispiel bringen?
Viele Grüße
Denis
Hallo.
Ich danke erstmal für diese Erklärung. Ich habe den Code so umgesetzt, dass ich Ihn auf meine Bedürfnisse angepasst habe. jetzt ist es so, dass der Code kopiert, wenn bestimmte Bedingungen erfüllt sind. Ich habe hier eine Tabelle. In dieser Tabelle habe ich mir mehrere Tabellen gemacht. Diese haben Stäftenamen. Mit Ihrem Code, lasse ich eine Tabelle „SH“ durchsuchen. Die Bedingung ist die Stadt. Hat er die Zeile gefunden in der die Stadt steht, kopiert er die ganze Zeile in die dazugehörige Tabelle mit dem selben Stadtnamen.
Jetzt meine Frage. Es gibt auch eine Tabelle „Sonstige“. In der Tabelle „SH“ stehen auch Zeilen mit Städten die keine einzelne Tabelle haben. Hier fungiert die Tabelle „Sonstige“ als sog. Auffangbecken für alle anderen.
Wie kann ich dem Code sagen, dass er mir alle anderen Städte in die Tabelle „Sonstige“ kopieren soll?
Danke schonmal.
Hallo Thorsten,
würde gern sicher gehen, dass ich es richtig verstanden habe. Soll das Makro prüfen, ob für die Stadt eine eigene Tabelle (Arbeitsblatt) existiert? Und wenn nicht, die Stadt in das Arbeitsblatt „Sonstige“ kopieren?
Mann könnte die Namen der Tabellen auslesen und vergleichen, falls es keine Überstimmungen gibt, soll die Stadt in „Sonstige“ kopiert werden.
Viele Grüße
Denis
Guten Morgen.
Ja genau das ist gemeint. Suche mir in Spalte G die Namen der Städte und wenn ein Tabellenblatt mit dem Namen existiert, dann kopiere die ganze Zeile in das Tabellenblatt, ansonsten alle anderen Städte, wo kein eigenes Tabellenblatt existiert bitte in die Tabelle „Sonstige“.
Hallo Thorsten, dann sollte es wie oben beschrieben funktionieren. Stadt über eine Variable mit der Tabelle vergleichen, müssen noch die letzte Zeile der jeweiligen Tabelle ansteuern.
Guten Morgen.
Mit dieser Übereinstimmung…also wenn keine Übereinstimmung vorliegt….wie muss dass denn aussehen. Aus den Beispielen hier auf der Seite habe ich mir schon einige zusammengestrickt.
Auch die Suche nach einer Variablen (also die Stadtnamen) klappt und es wird artig in die anderen Tabellen kopiert.
Aber wie sage ich, dass wenn keine Übereinstimmung vorliegt, dass er in Sonstige kopieren soll. Gibt es ein Beispiel hier auf der Seite?
VG
Thorsten
Vielleicht noch zur Ergänzung. Derzeit kopiere die Zeilen mit dem Code die gefundenen Städte auf die Tabellen mit dem selben Namen.
Private Sub CommandButton3_Click()
Dim Zeile As Integer
Dim ZeileMax As Integer
Dim i As Integer
With Tabelle2
ZeileMax = .UsedRange.Rows.Count
n = 1
For Zeile = 2 To ZeileMax
If .Cells(Zeile, 4).Value = „Köln“ Then
.Rows(Zeile).Copy Destination:=ThisWorkbook.Worksheets(„Köln“).Rows(n)
n = n + 1
End If
Next Zeile
End With
End Sub
Das mache ich mit jeder Stadt die ich habe. Das klappt auch.
Aber jetzt sind halt Städte dort, die keine eigene Tabelle haben. Diese ganze Zeile soll dann in die Tabelle „Sonstige“.
Und genau diesen Codeschnipsel bekomme ich nicht hin.
Gruß
Thorsten
Hallo Thorsten,
wenn die Städte von vornherein bekannt sind, funktioniert dein Code. Einfach eine Else Bedingung einbauen.
Habe dir ein Beispiel hochgeladen. Habe die Blätter nach Städten benannt. Aber mit der Beschreibung wie bei dir geht es auch. Werden aber ziemlich viele „Wenns“, eventuell wäre SELECT CASE übersichtlicher (und performanter).
Eleganter wäre es zu prüfen ob die Tabelle für die Stadt existiert. Wenn ja, soll in diese kopiert werden. Wenn nicht, soll in „Sonstige“ kopiert werden. Auch hier habe ich ein Beispiel erstellt.
Super danke.
Habe es umgesetzt und klappt perfekt.
Ein anderes Thema habe ich noch.
Ich habe zwei Tabellenblätter. Im ersten Tabellenblatt (Tabelle1) sind nur die CommandButtons. Im zweiten Tabellenblatt („Betrag“) stehen folgende Informationen.
Spalte A: Nachname
Spalte B. Vorname
Spalte C: Geburtsdatum
Spalte D: Ort
Spalte E: Leistungsbeginn
Spalte F: Leistungsende
Spalte G: Leistungsbetrag
Spalte H-N. Zusatzinformationen
In den Zeilen stehen jeweils ausgefüllt die Daten zu den einzelnen Personen. Es sind pro Person mehrere Einträge nach unten (Personen kommen mehrfach vor). So kann es sein das eine Person (Meier, Michael 7-8x untereinander kommt, mit jeweils einem Leistungsbetrag). Es sind über 3000 Zeilen nach unten.
Ich möchte jetzt mit dem klick auf einen CommandButton in Tabelle 1 folgendes bewirken:
1. Die Liste soll nach Spalte A sortiert werden (und zwar ab Zeile 2, da in Zeile 1 die Überschriften stehen).
2. Steht zum Beispiel in Zeile 2 Meier, Michael mit dem jeweiligen Leistungsbetrag und das geht bis Zeile 8 und in Zeile 9 kommt Meyer, Jörg, sollen nach den ersten 8 Zeilen (da gleiche Person) eine Leerzeile eingefügt werden. In der Leerzeile soll dann in Spalte A das Wort „Summe“ (rechtsbündig) eingetragen werden und die Summe der jeweiligen Leistungsbeträge soll in der Leerzeile bei Spalte G gebildet werden. Und weiter geht es zum nächsten Namen….usw.
Die Bedingung zum Suchen/Sortieren der gleichen Namen soll mit Nachname, Vorname und Geburtsdatum identifiziert werden, da Nachname und Vorname schonmal gleich sein können. Somit unterscheidet das Geburtsdatum dann.
Ist so etwas zu machen?
Hallo Thorsten, freut mich, dass es geklappt hat. Sortieren sollte mit der Range.Sort hinhauen. Wie du eine Leerzeile einfügst, habe ich im Beitrag Excel VBA – Zeilen einfügen beschrieben.
Viele Grüße
Denis
Danke. Hat super geklappt.
Hallo Herr Reis,
danke erst mal für die gelungene Beschreibung.
Hätte diesbezüglich eine Frage:
Bei meiner Tabelle gibt es zwei Spalten die einen konkreten Wert annehmen müssten damit sie kopiert werden. Konkret gesagt: Wenn in der Spalte H, ab Zeile 10, der Wert „S“ vorkommt oder wenn in der Spalte I, ab Zeile 10, der Wert „H“ vorkommt, dann soll kopiert werden. Wenn beide Kriterien erfüllt sind, soll auch kopiert werden aber nur einmal.
Können sie mir bei diesem Problem weiterhelfen?
Vielen Dank im Voraus und liebe Grüße,
Stefan Primas
Hallo Herr Primas,
verstehe es leider noch nicht ganz. Was soll passieren wenn nur eine Bedingung erfüllt ist? Wird ja auch nur einmal kopiert, oder? Vielleicht können Sie ein Beispiel bringen?
Viele Grüße
Denis
Hallo Herr Reis,
Wenn Ich die Zeile „If. Cells(Zeile. 3).Value = „Ja“ Then“ eingebe zeigt mir Microsoft einen Fehler an.
Fehler beim Kompilieren:
Erwartet Bezeichner oder geklammerter Ausdruck
Können Sie mir helfen diesen Fehler zu beseitigen?
Hallo Herr Möller, was kommt nach „Then“?
Haben Sie versucht, das gesamte Makro zu kopieren und einzufügen?
Viele Grüße
Denis
Hallo Herr Reis,
erstmal vielen Dank für die leicht verständliche Erklärung.
Allerdings habe auch ich eine Frage. In meiner Tabelle befinden sich Nummern, die mit RA-***** beginnen (z. Bsp. RA-01535) und normale Nummern (z. Bsp. 0124).
Ich möchte nur die normalen Nummern kopieren.
Allerdings weiß ich nicht, wie ich in dem Makro schreiben kann, dass alle Nummern die mit „RA“ beginnen nicht mit kopiert werden.
Können Sie mir bei der leichten Anpassung des Codes helfen?
Viele Grüße
Lucas
Hallo Lucas,
würde mit Left nach den ersten zwei Zeichen schauen und dementsprechend handeln:
If Left(.Cells(Zeile, Spalte).Value, 2) = "RA" Then
'do nothing
Else
'copy
End If
Viele Grüße
Denis
Hallo,
funktioniert das ganze auch mit Libre Office?
Ich habe da meine Probleme!
Für einen kleinen Tipp wäre ich dankbar.
Sorry, kenne mich mit Libre nicht aus.
Hallo,
Makro funktioniert super. Ich möchte aber nur eine bestimmte Zelle aus einer Zeile von Tabelle1 in eine Bestimmte Zelle der Tabelle 2 schreiben. habe schon so versucht — .Rows(Zeile, 16[Spalte]).Copy Destination:=Sheets(„MonatName“).Rows(n, 2[Spalte])– funktioniert nicht kommt immer Debuggen. was mach ich Falsch.
Danke
Gruß Friedl
Hallo Friedl,
versuchen Sie es mal mit .Cells(Zeile, Spalte)
Viele Grüße
Denis
Hallo Friedl,
versuchen Sie es mal mit .Cells(Zeile, Spalte)
Viele Grüße
Denis
Hallo,
Ich bin seit Tagen auf der suche nach einem VBA code der mir weiter helfen kann.
Dann bin ich auf diesen hier gestoßen er erfüllt das was ich bräuchte aber ich würde gerne eine Zeile in eine andere Tabelle kopieren und nicht mit dem „Ja“
Es sollen die Zeilen kopiert werden, die einen Colorindex 35 haben. Und das würde ich gerne in den Code eingeben.
Ich hoffe du kannst mir helfen
Viele Grüße
Hallo, probiere es mal mit
If .Cells(Zeile, 3).Interior.ColorIndex = 35
Viele Grüße
Denis
Hallo Denis,
das funktioniert super, vielen Dank.
Wie bekomm ich es hin, dass erst ab Zeile 2 eingefügt wird, da ich in Zeile 1 Überschriften habe?
Vielen Dank
Frank
Hallo Dennis,
vielen Dank für den schlanken VBA Code. Das Makro macht „fast“ genau das, was es soll.
Was müsste ich hinzufügen / verändern, um die kopierten Zellen von Tabelle 1 in die nächste freie Zeile der Tabelle 2 zu kopieren.
Tabelle 2 soll also eine fortlaufende Auflistung der kopierten Zeilen aus Tabelle 1 sein.
Ist das überhaupt möglich?
Besten Dank und viele Grüße.
Oliver
Hallo Herr Reis, bin VBA Anfängerin oder sagen wir mal, es will einfach nicht in mein Hirn ;-( ,
ich muss diesen Code doch sicherlich als Modul anlegen, oder muss ich ihn in die MS Excel Objekte einprogrammieren, Zieltabelle(Tabelle2), oder Starttabelle (Tabelle1), oder diese Arbeitsmappe?
Soweit funktioniert der Code, aber wenn ich einen neuen Datensatz in der Starttabelle (Tabelle1) anlege, der mein Kriterium beinhaltet, wird dieser nicht automatisch in der Zieltabelle übernommen, außer ich starte das Modul manuell.
Wie bekomme ich es hin, dass dies ständig ausgeführt wird?
Was muss ich noch programmieren, wenn ich eine zusätzliche Prüfung mit dabei haben möchte; z.B. Spalte 17 soll leer sein, ein AND klappt nicht.
If .Cells(Zeile, 5).Value = „W“
If .Cells(Zeile, 17).Value = „“ Then
Ich möchte mich im Vorfeld bedanken, dass Sie Ihre Erklärungen sehr verständlich vermitteln können.
Hallo Herr Reis, ich kenne mich überhaupt mit VBA nicht aus. Ich habe mir ein Buchhaltungsprogramm erstellt. Auf einem Tabellenblatt gebe ich die Buchungen ein. Auf ein zweites Tabellenblatt habe ich die Konten angelegt. Ich habe alles mit Formeln belegt. Diese funktionieren auch. Wenn ich aber eine wiederkehrende Buchung eingebe, sind auf dem Konto Leerzellen. Kann ich mit einem VBA Code den Buchungstext automatisch fortlaufend programmieren.
Hallo Herr Seith, würde nicht ein einfacher SVERWEIS helfen?
https://www.denisreis.com/waehrungsumrechnung-mit-sverweis/
Hallo zusammen,
vorab erstmal vielen Dank an Denis für viele tolle Tipps!
Nun zu meinem Anliegen.
Der nachfolgende Code (stammt von oben aus diesem Beitrag) ist sehr verständlich. Ich muss aber Folgendes ändern:
1. Ich muss Daten nicht aus einem Tabellenblatt derselben Datei, sondern aus einem Tabellenblatt
einer zweiten Datei (Quelldatei) holen.
2. Die Reihenfolge der Spalten in der Quelldatei entspricht nicht der Reihenfolge der Zieldatei.
– Spalte A der Quelldatei = Spalte D der Zieldatei
– Spalte B der Quelldatei = Spalte A der Zieldatei
Meine Zieldatei : C:\ZielOrdner\ZielDatei.xlsm Tabellenblatt: ZielTabelle
Meine Quelldatei: C:\QuellOrdner\QuellDatei.xlsm Tabellenblatt: QuellTabelle
Wie muss der folgende Code angepasst werden (habe ihn von oben aus diesem Beitrag hierher kopiert):
_____________________________________
Sub BedingteKopieZeilen()
Dim Zeile As Long
Dim ZeileMax As Long
Dim n As Long
With Tabelle1
ZeileMax = .UsedRange.Rows.Count
n = 1
For Zeile = 2 To ZeileMax
If .Cells(Zeile, 3).Value = „Ja“ Then
.Rows(Zeile).Copy Destination:=Tabelle2.Rows(n)
n = n + 1
End If
Next Zeile
End With
End Sub
_____________________________________
Gruß aus Bremen
Frank
Hallo,
erstmal vielen Dank für diese tolle Beschreibung.
Wenn ich jedoch den Code abändere nach meinen Vorgaben. Erhalte ich immer den Laufzeitfehler 424. Können sie mir sagen was ich falsch gemacht habe? Hier der Code:
Sub BedingteKopieZeilen()
Dim Zeile As Long
Dim ZeileMax As Long
Dim n As Long
With Übersicht
ZeileMax = .UsedRange.Rows.Count
n = 1
For Zeile = 2 To ZeileMax
If .Cells(Zeile, 7).Value = „Zugesagt“ Then
.Rows(Zeile).Copy Destination:=Zugesagt.Rows(n)
n = n + 1
End If
Next Zeile
End With
End Sub
Ich wäre für jede Hilfe dankbar.
LG
Tom
Hallo Herr Reis,
seit einiger Zeit (kein Profi) beschäftige ich mich mit dem Thema VBA. Ich bin dabei, ein bereits von mir geschriebenes Programm für eine Kegler-Vereinigung in Excel 2013 in VBA umzuschreiben.
Meine Kenntnisse in VBA habe ich mir aus Büchern, Foren und vielen Beispielen aus dem Internet angeeignet. Seit längerem suche ich nach einer Lösung, wie ich die ermittelten Kegler-Ergebnisse aus der Erfassungstabelle in eine Auswertungstabelle in der gleichen Arbeitsmappe kopieren kann.
Bei der Suche im Internet bin ich auf Ihre Seite gekommen und habe mir Ihr E-Book mit den Makros heruntergeladen. Dabei bin ich auf einen Lösungsansatz gestoßen. Mit dem Beispiel (Kopie von 0028 – Bestimmte Zeilen in eine andere Tabelle kopieren müsste es klappen. Leider habe ich es nicht geschafft, es umzusetzen.
Nun zu meinem Anliegen Herr Reis!
Der folgende Code stammt von Ihnen, ich habe angefangen diesen für meine Bedürfnisse anzupassen
Sub Wertekopieren()
Dim Zeile As Long
Dim ZeileMax As Long
Dim n As Long
With Hollern
ZeileMax = .UsedRange.Rows.Count
n = 1
For Zeile = 2 To ZeileMax
If .Cells(Zeile, 3).Value = „Ja“ Then
.Rows(Zeile).Copy Destination:=Kegler.Rows(n)
n = n + 1
End If
Next Zeile
End With
End Sub
Folgende Daten möchte ich aus der Tab_Hollern in die Tab_Kegler kopieren:
-Spalte CI, CJ, CK, CR, CY und DF der Tab_Hollern = Spalte AA, AB, AC,AO und AS der Tab_Kegler
Herr Reis, wie muss der Code angepasst werden?
Können Sie mir helfen?
Gruß aus Hamburg
Ernst
Hallo Herr Reis,
danke für die tolle Erklärung ich konnte den Cod für mich entsprechen anpassen. Allerdings würde ich gerne nur die Werte einfügen. Bekomme es aber nicht hin. Hab schon einiges mit PasteSpecial Paste:=xlValues versucht aber leider ohne Erfolg.
Kann mir einer weiterhelfen?
Hallo Hr. Reis,
ich habe ihr VBA wie oben Verwendet. Habe es dann noch etwas abgeändert um einen Variablen Wert auszulesen:
Sub Biotop()
Dim Zeile As Long
Dim ZeileMax As Long
Dim n As Long
ThisWorkbook.Worksheets(„Tabelle2“).Activate
Range(„A2:K10“).Clear
With Tabelle1
ZeileMax = .UsedRange.Rows.Count
n = 1
For Zeile = 2 To ZeileMax
If .Cells(Zeile, 1).Value = Range(„P2“) Then
.Rows(Zeile).Copy Destination:=Tabelle2.Rows(n)
n = n + 1
End If
Next Zeile
End With
End Sub
Private Sub Workbook_Open()
End Sub
Funktioniert soweit. Jetzt hätte ich aber gerne auch die Spaltenüberschriften in der Ausgabetabelle.
Geht es auch das ich in P2 einen Wert eintrage der „irgendwo“ in der Datentabelle steht und mir dann dazu die kpl. Zeile in die Ausgabetabelle kopiert wird? oder muss ich dann jeweils ein Makro mit der entsprechende Zeile/Spalte anlegen?
Danke im Voraus
Gruß aus Burghausen
Uwe
Hallo Denis,
das Beispiel ist sehr gut. Hätte aber ein anderes Problem, und zwar möchte ich in einer Master Excel Datei mittels Button druck aus 2 Excel Datein (selber Aufbau) nur die Zeilen in die Master Excel Datei kopieren die das aktuelle Datum haben (Spalte A ist immer das Datum). Hättest du dafür auch eine Lösung?! Danke schon mal im Voraus
habe eine Lösung für mein Problem – jedoch bin ich noch nicht ganz zufrieden. Das Makro kopiert mir von den beiden Quelldatein immer die Überschriften mit, und das soll nicht sein – hat jemand eine Idee?!
hier der aktuelle Code:
Private Sub CommandButton1_Click()
Dim wkb As Workbook
Dim wksQuelle As Worksheet
Dim wksZiel As Worksheet
Dim arDateien As Variant
Dim lrow As Long
Dim i As Integer
Dim strPfad As String
Dim Datum As Date
Datum = Format(Now(), „DD.MM.YYYY“) ‚aktuelles Datum definieren
Worksheets(1).UsedRange.ClearContents ‚löschte aktuelles Tabellenblatt
strPfad = „T:\GM10\GL-BTL\Gutschriften“ ‚Pfad der zu prüfenden Dateien
Set wksZiel = ThisWorkbook.Worksheets(„Tabelle1“) ‚Zieltabellennamen
arDateien = Array(„KE_Test.xlsm“, „KA_Test.xlsm“) ‚Dateinamen
For i = LBound(arDateien) To UBound(arDateien)
Set wkb = Workbooks.Open(strPfad & „\“ & arDateien(i))
Set wksQuelle = wkb.Worksheets(„Tabelle1“) ‚ Tabellennamen anpassen
wksQuelle.Range(„A2″).AutoFilter _
field:=1, Criteria1:=“>=“ & CDbl(Datum)
wksQuelle.Cells(1, 1).CurrentRegion.Copy wksZiel.Cells(wksZiel.Cells(Rows.Count, 2).End(xlUp).Row + 1, 1)
wkb.Close False
Next
MsgBox “ Fertig „, vbInformation + vbOKOnly, „Hinweis!“ ‚bringt Meldung wenn das Makro fertig ist
End Sub
Hallo, ich möchte nur die Werte in Tabelle 2 kopieren ohne Formate. Wie geht das?
Hallo, Ich brauche wirklich Hilfe und suche schon seit Tagen im Internet nah einer Lösung. Ich stelle gerade für mein Kleingartenverein eine Excelmappe mit verschiedenen Blättern her. Mitgliederliste, Rechnungen, Zahlungserinnerung, Mahnung usw. Hat soweit auch gut geklappt, aber jetzt habe ich ein Problem. Ich bekomme einen Code nicht hin und war habe ich eine Mitgliederliste und möchte die einzelnen Namen und Adressen in die Mahnung einfügen über ein Makro. Die erste Zeile mit Namen und Adresse bekomme ich auch hin, aber dann ruft er die 2 Zeile mit der Adresse und 3 und 4 usw nicht automatisch auf.Muss ich für jede einzelne Zeile ein neues Makro erstellen oder kann man das mit einen Code auf automatisch stellen? Würde mich sehr darüber freuen, wenn Ihr mir helfen könnt und mir vielleicht ein Beispielcode schicken könntet.
Hallo Herr Reis,
danke für das tolle Makro!
Ich bin totale VBA-Anfängerin, muss aber sehr viel mit Excel arbeiten und würde mir das gern etwas leichter machen.
Im Moment führe ich für jeden einzelnen Techniker eine Auswertung, was natürlich sehr aufwendig ist. Jetzt würde ich gerne eine Excel-Datei als Quelle verwenden und mit Hilfe des Makros die zum jeweiligen Techniker gehörende Auswertung in eine eigene Datei kopieren. Das Makro funktioniert ja so wie es ist wunderbar, wenn ich mich innerhalb einer Datei bewege, aber wie bekomme ich es hin, es in eine andere zu kopieren?
Danke für Ihre Hilfe!
Hallo,
ich brauche dringend eure Hilfe!
Ich habe eine Excel-Tabelle, bei der die Spalten und Zeilen sowohl mit Text als auch mit Zahlen befüllt sind.
151 Berlin 117 87 154
182 ROM Taxi Apples 156
109 188 62 97 125
194 125 110 122 76
166 Paris 79 Bananas 169
193 Oranges 119 131 167
158 173 Grapes 180 100
Wie kann ich binnen eines Makros feststellen, welche Zellen Text und welche Zellen mit Zahlen befüllt sind?
Ich wäre jedem dankbar für seine Hilfe!
VG
Samuel