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

Forumthread: Dropdown-Auswahl prüfen, dann Spalte kopieren

Dropdown-Auswahl prüfen, dann Spalte kopieren
24.10.2016 13:33:48
PwnStarr
Hallo an alle,
ich komme einfach nicht weiter. Ich hoffe, es kann mir jemand helfen.
Ich habe eine Datei mit zwei Tabellenblättern. In Tabelle1 sind in C11 bis XXX Spaltenüberschriften per Dropdown-Menü (erstellt über Datenüberprüfung) zum Auswählen. Wenn ich nun aus dem Dropdown eine Überschrift auswähle, soll in Tabelle2 nach genau dieser Überschrift gesucht werden. Wenn die Überschrift gefunden wurde, soll die komplette Spalte mit Werten, Formeln und Formatierung in die nächste freie Spalte von Tabelle 1 ab C12 eingefügt werden.
Mit WVerweis ging das ziemlich gut. Nur leider kann ich ja dann an den einzelnen, aus Tabelle2 übernommenen Werten nichts ändern, da die Zelle dann ja mit der Formel "besetzt" ist. Die Werte in Tabelle2 sind "fest".
Oje, ich hoffe, ich habe es verständlich ausdrücken können.
Kann mir ein Makro bei meinem Problem Abhilfe schaffen?
Vielen Dank im Voraus!
LG Starr
Anzeige

18
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Dropdown-Auswahl prüfen, dann Spalte kopieren
24.10.2016 14:32:47
Rudi
Hallo,
ins Modul der Tabelle1:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim vCol
If Target.Row = 11 Then
If Target.Column > 2 Then
With Sheets("Tabelle2")
vCol = Application.Match(Target.Value, .Rows(11), 0)
If Not IsError(vCol) Then
Application.EnableEvents = False
.Range(.Cells(12, vCol), .Cells(Rows.Count, vCol).End(xlUp)).Copy _
Target.Offset(1)
Application.EnableEvents = True
End If
End With
End If
End If
End Sub
Gruß
Rudi
Anzeige
AW: Dropdown-Auswahl prüfen, dann Spalte kopieren
24.10.2016 15:10:37
PwnStarr
Vielen lieben Dank für die Antwort, Rudi!
Ich stelle mich bestimmt selten dämlich an, aber wenn ich den Code ins Modul der Tabelle schreibe, dann fragt Excel mich
a) nach dem Makronamen (aber er ist doch vergeben?!?)
b) wenn ich dann ein Namen definiert hab usw. bringt er die Fehlermeldung: Fehler beim Kompilieren - End Sub erwartet
Was mache ich falsch?
:(
Anzeige
AW: Dropdown-Auswahl prüfen, dann Spalte kopieren
24.10.2016 21:36:19
Werner
Hallo,
Rechtsklick auf das Tab von Tabellenblatt 1, Code anzeigen, kompletten Code von Rudi rechts ins Codefenster Kopieren und fertig.
Gruß Werner
AW: Dropdown-Auswahl prüfen, dann Spalte kopieren
25.10.2016 11:46:28
PwnStarr
Vielen Dank nochmal!
Leider funktioniert es nicht so, wie ich es mir gedacht habe. Das liegt aber sicherlich an meiner Beschreibung des Problems. Deshalb habe ich unter https://www.herber.de/bbs/user/109005.xlsx eine Beispieldatei angehängt.
Es wäre schön, wenn sich nochmal jemand meiner erbarmen würde...
In Tabellenblatt "Auswertung" soll über das Dropdown-Menü in Zeile 11 eine ID-Nr. ausgewählt werden können. Wenn man die ID-Nr. ausgwählt hat, beispielsweise die "1", sucht Excel im Tabellenblatt "Parameter" nach der ID-Nr. in Zeile 6. Wenn er die "1" gefunden hat, übernimmt er sämtliche Werte, Formeln und die Formatierung der Spalte mit der ID-Nr.1 und fügt sie im Tabellenblatt "Auswertung" in die Spalte ein, in der zu Beginn die "1" ausgwählt wurde.
Ich hoffe, es ist verständlich ausgedrückt.
Vielen, vielen Dank schon mal an meine(n) Helfer!
Grüßle Starr
Anzeige
AW: Dropdown-Auswahl prüfen, dann Spalte kopieren
25.10.2016 17:40:14
Werner
Hallo,
aufgrund einer Eingangsangaben hat der Code von Rudi in der falschen Zeile gesucht, in Zeile 12 anstatt in Zeile 6.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim vCol
If Target.Row = 11 Then
If Target.Column > 2 Then
With Sheets("Parameter")
vCol = Application.Match(Target.Value, .Rows(6), 0)
If Not IsError(vCol) Then
Application.EnableEvents = False
.Range(.Cells(7, vCol), .Cells(Rows.Count, vCol).End(xlUp)).Copy
Target.Offset(1).PasteSpecial Paste:=xlAll, _
Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Application.EnableEvents = True
Application.CutCopyMode = False
End If
End With
End If
End If
End Sub
Der Code gehört ins Codemodul vom Tabellenblatt Auswertung. Testen konnte ich nicht, habe momentan nur ein Tablet.
Gruß Werner
Anzeige
AW: Dropdown-Auswahl prüfen, dann Spalte kopieren
25.10.2016 18:56:41
Pwnstarr
Und ich hab gerade nur ein Smartphone... -.-
Sobald ich wieder am Rechner bin, teste ich den Code.
Wenn er funktioniert... hui. Dann steh ich in Ihrer Schuld.
Schönen Abend noch,Werner. Haben Sie vielen Dank!
Ahoi.
AW: Dropdown-Auswahl prüfen, dann Spalte kopieren
25.10.2016 21:11:27
Werner
Hallo,
ich nochmal kurz.
Punkt 1:
Wir sind hier per du.
Punkt 2:
Glück gehabt. Du hast das gleiche Problem auch bei VBA-Forum gepostet. Das nennt man Crossposting und wird nicht gerne gesehen. Bin mir nicht sicher, ob dir hier Hilfe angeboten worden wäre, wenn es früher aufgefallen wäre. Manche helfen trotzdem, viele andere nicht. Für die Zukunft: Wenn schon Crossposting, dann die verschiedenen Beiträge untereinander verlinken.
Punkt 3:
Sollte der Code so funktionieren, dann bitte den Beitrag im anderen Forum als gelöst kennzeichnen.
Gruß Werner
Anzeige
AW: Dropdown-Auswahl prüfen, dann Spalte kopieren
25.10.2016 22:50:50
Pwnstarr
Zu den Punkten 1 und 2:
Das ist das erste Mal, dass ich überhaupt in einem Forum etwas gepostet/angefragt habe, deswegen Asche auf mein Haupt, dass ich mit den Gepflogenheiten wie Anrede und Crossposting nicht vertraut bin. Beides tut mir leid und kommt nicht wieder vor.
In dem Fall ist mir deine Hilfe und die von Rudi noch mehr wert.
Zu Punkt 3:
Mach ich.
In dem Sinne... schönen Abend noch.
Anzeige
AW: Dropdown-Auswahl prüfen, dann Spalte kopieren
26.10.2016 08:20:14
PwnStarr
Guten Morgen,
also ich habe den Code nun getestet. Nachdem ich die absoluten Bezüge in den Formeln entfernt hatte, rechnet er bei den ins Tabellenblatt Auswertung übernommenen Werten & Formeln auch das aus, was er soll.
Nun habe ich noch eine Frage, die mir beim Testen aufgefallen ist:
Kann man dem Code einen Befehl hinzufügen, der, wenn man im Tabellenblatt "Auswertung" die ID-Nr. aus Zeile 11 entfernt, er die übernommene Spalte wieder entfernt?
Wenn ich mehrere ID-Nr. markiere und lösche, weil ich andere Parameter auswerten möchte, bringt er die Fehlermeldung "Typen unverträglich" und dann funktioniert alles nicht mehr.
Ansonsten bin ich unglaublich dankbar für die Hilfe. Alleine hätte ich das trotz der 100 VBA-Bücher auf meinem Schreibtisch und dem Internet nicht geschafft.
Schönen Mittwoch.
Adios Starr
Anzeige
AW: Dropdown-Auswahl prüfen, dann Spalte kopieren
26.10.2016 11:10:50
Werner
Hallo,
teste mal:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim vCol
If Target.Row = 11 Then
If Target.Column > 2 Then
If Target.Value = "" Then
Application.EnableEvents = False
Range(Cells(12, Target.Column), Cells(Rows.Count, Target.Column).End(xlUp)).Delete
Application.EnableEvents = True
Exit Sub
End If
With Sheets("Parameter")
vCol = Application.Match(Target.Value, .Rows(6), 0)
If Not IsError(vCol) Then
Application.EnableEvents = False
Range(Cells(12, Target.Column), Cells(Rows.Count, Target.Column).End(xlUp)).Delete
.Range(.Cells(7, vCol), .Cells(Rows.Count, vCol).End(xlUp)).Copy
Target.Offset(1).PasteSpecial Paste:=xlAll, _
Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Application.EnableEvents = True
Application.CutCopyMode = False
End If
End With
End If
End If
End Sub
Kann dir aber nicht sagen, ob es so tatsächlich passt. Ich kann nach wie vor nichts testen.
Gruß Werner
Anzeige
AW: Dropdown-Auswahl prüfen, dann Spalte kopieren
26.10.2016 12:30:41
PwnStarr
Ich hab's getestet.
Also die Spalten übernimmt er mittlerweile wunderbar.
Aber das Löschen funktioniert insoweit, dass er wirklich die Zellen löscht. Wenn ich lang genug auf Entfernen drücken würde, "verschlingt" Excel alles was sich vor der aktiven Zelle befindet, sodass irgendwann kein Tabellenkopf mehr da wäre usw.
Ich weiß nicht unter welchen Umständen, aber nachdem ich eine ID ausgewählt habe, bringt er mir Objekt erforderlich und löscht die letzte Spalte der ID-Auswahl. Beim Debuggen markiert er mir dann die Zeile:
Target.Offset(1).PasteSpecial Paste:=xlAll, _
Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Schwierig. Meine Beschreibung lässt sicher zu wünschen übrig, aber das Verhalten von Excel ist mir hier nicht nachvollziehbar.
Danke für deine Hilfe. Ehrlich.
Grüßle.
Anzeige
AW: Dropdown-Auswahl prüfen, dann Spalte kopieren
26.10.2016 14:27:19
Werner
Hallo,
wieso löschen mit der Entfernen Taste? Wenn du eine Spalte eingelesen hast, dann lösche mal den Eintrag in deinem Pulldown. Dann sollte die zugehörige Spalte gelöscht werden.
Wenn es nicht funktioniert, dann stell den Beitrag wieder auf offen. Ich kann frühestens am Freitag wieder was testen.
Gruß Werner
Anzeige
AW: Dropdown-Auswahl prüfen, dann Spalte kopieren
27.10.2016 11:34:22
PwnStarr
Ahoi.
Ich habe jetzt alles nochmal neu gemacht, in der Hoffnung, dass es etwas bringt.
Leider hat es nichts gebracht.
Sobald ich per Pulldown eine ID auswähle, bringt er 'Objekt erforderlich' und markiert
Target.Offset(1).PasteSpecial Paste:=xlAll, _
Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Zudem löscht eine ID-Zelle und die darunterliegende.
D.h. ich wähle in Zelle C11 eine ID aus, er bringt die Fehlermeldung und es wird in Zeile 11 und 12 eine Zelle gelöscht.
Ich denke ich weiß auf was du hinaus wolltest mit deiner letzten Nachricht, deswegen habe ich dem Pulldown noch ein Leerfeld "hinzugefügt", um eben nicht mehr per 'Entf' die ID zu löschen. Kann es damit zusammenhängen? Aber in der oben genannten Code-Zeile wird ja nichts angesprochen, was damit zu tun haben könnte.
Liegt es vielleicht am Befehl Target.Offset?
Wenn ja, wie könnte ich den Bereich eingrenzen?
Stressfreien (auch auf dieses Thema bezogen) Donnerstag noch.
Adios Starr
Anzeige
AW: Dropdown-Auswahl prüfen, dann Spalte kopieren
27.10.2016 21:04:05
Werner
Hallo,
ich schau es mir am Wochenende mal an.
Gruß Werner
AW: Dropdown-Auswahl prüfen, dann Spalte kopieren
29.10.2016 10:38:33
Werner
Hallo,
schau dir die Datei mal an und teste.

Die Datei https://www.herber.de/bbs/user/109088.xlsm wurde aus Datenschutzgründen gelöscht


Wenn du die Formeln mit ins Blatt Auswertung übernehmen willst (wird derzeit so gemacht), dann musst du im Blatt Parameter die absoluten Bezüge auf die Zeilen aus den Formeln rausnehmen (hab ich mal für Birne gemacht). Da zwischen Parameter und Auswertung die Zeilen unterschiedlich sind, kommt sonst nur Mist raus, da beim Kopieren die Zeilenbezüge nicht angepasst werden können.
Gruß Werner
Anzeige
AW: Dropdown-Auswahl prüfen, dann Spalte kopieren
29.10.2016 13:31:59
Pwnstarr
Ahoi.
Danke Dir.
Das mit den absoluten Zellbezügen hatte ich ja schon geändert und auch schon geschrieben. Wenigstens etwas, was ich zur Sache beitragen konnte -.-
Die Datei schaue ich mir dann gleich an. Geb dir dann Bescheid.
Danke!
Adios.
AW: Dropdown-Auswahl prüfen, dann Spalte kopieren
29.10.2016 14:11:33
PwnStarr
Hallo Werner,
ich habe getestet. Und was soll ich sagen? Es funktioniert!
Ich habe aus der Test-Datei noch die absoluten Bezüge entfernt und für alle die, die irgendwann mal das gleiche Problem haben sollten, nochmal die Datei mit Code, die das Problem gelöst hat, unter https://www.herber.de/bbs/user/109093.xlsm
hochgeladen.
Vielen, vielen, vielen Dank nochmal für deine kompetente und verständnisvolle Hilfe.
Schönes Wochenende noch!
Gruß Starr
Anzeige
AW: Danke für die Rückmeldung.
29.10.2016 15:08:47
Werner
Hallo,
freut mich, dass ich helfen konnte. Dir auch noch ein schönes WE.
Gruß Werner
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Dropdown-Auswahl prüfen und Spalte kopieren in Excel


Schritt-für-Schritt-Anleitung

  1. Dropdown-Menü erstellen:

    • Gehe zu der Zelle, in der Du das Dropdown-Menü erstellen möchtest (z.B. C11).
    • Wähle Daten > Datenüberprüfung.
    • Setze den Typ auf Liste und gib die Quelle für die Dropdown-Auswahl an.
  2. VBA-Editor öffnen:

    • Drücke ALT + F11, um den VBA-Editor zu öffnen.
    • Suche im Projektfenster nach dem entsprechenden Arbeitsblatt (z.B. Tabelle1) und klicke mit der rechten Maustaste darauf.
    • Wähle Code anzeigen.
  3. Makro einfügen:

    • Kopiere den folgenden VBA-Code und füge ihn in das Codefenster ein:
    Private Sub Worksheet_Change(ByVal Target As Range)
       Dim vCol
       If Target.Row = 11 Then
           If Target.Column > 2 Then
               If Target.Value = "" Then
                   Application.EnableEvents = False
                   Range(Cells(12, Target.Column), Cells(Rows.Count, Target.Column).End(xlUp)).Delete
                   Application.EnableEvents = True
                   Exit Sub
               End If
               With Sheets("Parameter")
                   vCol = Application.Match(Target.Value, .Rows(6), 0)
                   If Not IsError(vCol) Then
                       Application.EnableEvents = False
                       Range(Cells(12, Target.Column), Cells(Rows.Count, Target.Column).End(xlUp)).Delete
                       .Range(.Cells(7, vCol), .Cells(Rows.Count, vCol).End(xlUp)).Copy
                       Target.Offset(1).PasteSpecial Paste:=xlAll, _
                           Operation:=xlNone, SkipBlanks:=False, Transpose:=False
                       Application.EnableEvents = True
                       Application.CutCopyMode = False
                   End If
               End With
           End If
       End If
    End Sub
  4. Speichern und testen:

    • Speichere die Datei als Excel-Makro-fähige Arbeitsmappe (*.xlsm).
    • Teste das Dropdown-Menü, indem Du eine Auswahl triffst und beobachtest, ob die entsprechende Spalte in das Zielblatt eingefügt wird.

Häufige Fehler und Lösungen

  • Fehler: "Objekt erforderlich"

    • Dieser Fehler tritt häufig auf, wenn das Zielobjekt nicht gefunden wird. Überprüfe, ob die Namen der Blätter korrekt sind.
  • Dropdown funktioniert nicht

    • Stelle sicher, dass die Datenüberprüfung korrekt eingerichtet ist und die Quelle für das Dropdown-Menü stimmt.
  • Spalten werden nicht korrekt kopiert

    • Achte darauf, dass die absoluten Bezüge in den Formeln entfernt sind, um fehlerhafte Berechnungen zu vermeiden.

Alternative Methoden

  • Manuelles Kopieren:

    • Du kannst die Daten manuell kopieren, indem Du die Spalte markierst und mit Strg + C kopierst und dann mit Strg + V in die gewünschte Zelle einfügst. Dies ist jedoch weniger effizient, besonders bei großen Datenmengen.
  • Excel-Datenüberprüfung auf andere Zellen kopieren:

    • Du kannst die Datenüberprüfung auch auf andere Zellen übertragen, indem Du die Zelle kopierst und die Funktion Inhalte einfügen > Datenüberprüfung auswählst.

Praktische Beispiele

  • Beispiel 1: Kopieren einer gesamten Spalte

    • Wenn Du in C11 "ID 1" auswählst, sucht das Makro in der "Parameter"-Tabelle nach der entsprechenden ID und kopiert die gesamte Spalte in die "Auswertung"-Tabelle.
  • Beispiel 2: Leeren der Auswahl

    • Wenn Du den Wert in C11 löscht, wird die zuvor eingefügte Spalte automatisch entfernt, was durch die Implementierung des If Target.Value = "" Befehls im VBA-Code ermöglicht wird.

Tipps für Profis

  • Verwende benannte Bereiche:

    • Statt fester Zellreferenzen kannst Du benannte Bereiche verwenden, um die Wartung Deiner Dropdown-Listen zu erleichtern.
  • Makros optimieren:

    • Verwende Application.ScreenUpdating = False, um das Flackern des Bildschirms zu vermeiden, während das Makro ausgeführt wird.
  • Dropdown für ganze Spalte:

    • Wenn Du ein Dropdown für eine gesamte Spalte verwenden möchtest, stelle sicher, dass Du die Quelle entsprechend anpasst.

FAQ: Häufige Fragen

1. Wie kann ich ein Dropdown-Menü in eine ganze Spalte anwenden?
Du kannst das Dropdown-Menü auf eine ganze Spalte anwenden, indem Du die Zelle mit dem Dropdown-Menü kopierst und die Datenüberprüfung auf die gesamte Spalte überträgst.

2. Kann ich die Dropdown-Liste in mehreren Blättern verwenden?
Ja, Du kannst die gleiche Dropdown-Quelle in verschiedenen Blättern verwenden, indem Du den Bereich entsprechend definierst.

3. Was tun, wenn die Dropdown-Auswahl nicht aktualisiert wird?
Überprüfe die Makros und stelle sicher, dass die Worksheet_Change-Ereignisprozedur korrekt funktioniert. Manchmal kann auch das Deaktivieren und Aktivieren von Application.EnableEvents helfen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige