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

Spaltenüberschriften suchen und Spalten kopieren

Forumthread: Spaltenüberschriften suchen und Spalten kopieren

Spaltenüberschriften suchen und Spalten kopieren
27.07.2016 20:45:52
SoHam
Hallo!
Möchte gerne ein Makro machen mit dem man in dem Blatt newData jede Spaltenüberschrift nimmt und in dem Blatt importedData sucht, diese Spalte dann kopiert und in newData einfügt.
Ich kann gar nicht programmieren und habe ein paar Code Sachen gesucht.
Bei "Set whatToFind" kommt immer ein Fehler das ein Objekt erforderlich ist.
Was ist da denn falsch?
Ich wollte statt er anstatt nach "city" zu suchen nach jeder Spaltenüberschrift sucht
Sub SucheundKopieren()
Dim i As Integer
Dim Treffer As Range
Dim whatToFind As String
Dim LastColumn As Integer
Set whatToFind = newData.Cells(1, i).Value
newData.Activate
For i = 1 To Cells(1, Columns.Count).End(xlToLeft).Column
With ImportedData
Set Treffer = .Rows(1).Find(what:="city", lookat:=xlWhole)
If Treffer Is Nothing Then
MsgBox "Spalte mit Wert wurde nicht gefunden"
Else
.Columns(Treffer.Column).Copy Destination:=newData.Range("A1")
End If
End With
Next i
End Sub
Wäre cool wenn einer helfen könnte
Grüsse
Daniel
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Spaltenüberschriften suchen und Spalten kopieren
27.07.2016 20:52:57
Fennek
Hallo,
es gint mindesten 2 Probleme in dem code:
1. Set darf nur mit Objekten wie Range, Sheet oder Workbook verwendet werden
2. Da i ohne explizite Zuweisung ist, ist i=0, aber cells(1,i) ist außerhalb des Gültigkeitsbereich.
mfg
AW: Spaltenüberschriften suchen und Spalten kopieren
28.07.2016 17:14:22
SoHam
Vielen Dank an Fennek. Dein Tip hat mich viel weiter gebracht.
Hier nun das fertige Makro
"newdata" und "impotedData" muss man mit seinen eigenen Tabellennamen ersetzen z.B Worksheets("Tabelle1) und Worksheets("Tabelle2)
Sub SucheundKopieren()
Dim i As Integer
Dim Treffer As Range
Dim whatToFind As String
Dim k As Integer
k = 1
newData.Activate
For i = 1 To Cells(1, Columns.Count).End(xlToLeft).Column
whatToFind = newData.Cells(1, k).Value
With ImportedData
Set Treffer = .Rows(1).Find(what:=whatToFind, lookat:=xlWhole)
If Treffer Is Nothing Then
MsgBox "Spalte mit Wert wurde nicht gefunden"
Else
.Columns(Treffer.Column).Copy Destination:=newData.Cells(1, k)
End If
k = k + 1
End With
Next i
End Sub

Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Spaltenüberschriften in Excel suchen und kopieren


Schritt-für-Schritt-Anleitung

Um ein Makro zu erstellen, das in Excel die Spaltenüberschriften sucht und die entsprechenden Spalten kopiert, folge diesen Schritten:

  1. Öffne Excel und erstelle ein neues VBA-Modul.

  2. Füge den folgenden Code in das Modul ein. Achte darauf, die Blattnamen entsprechend anzupassen:

    Sub SucheundKopieren()
       Dim i As Integer
       Dim Treffer As Range
       Dim whatToFind As String
       Dim k As Integer
       k = 1
       newData.Activate
       For i = 1 To Cells(1, Columns.Count).End(xlToLeft).Column
           whatToFind = newData.Cells(1, k).Value
           With ImportedData
               Set Treffer = .Rows(1).Find(what:=whatToFind, lookat:=xlWhole)
               If Treffer Is Nothing Then
                   MsgBox "Spalte mit Wert wurde nicht gefunden"
               Else
                   .Columns(Treffer.Column).Copy Destination:=newData.Cells(1, k)
               End If
           End With
           k = k + 1
       Next i
    End Sub
  3. Speichere dein Makro und schließe den VBA-Editor.

  4. Führe das Makro aus, um die Spaltenüberschriften zu suchen und die Daten zu kopieren.


Häufige Fehler und Lösungen

Wenn du beim Ausführen des Makros auf Probleme stößt, hier einige häufige Fehler und deren Lösungen:

  • Fehler: "Ein Objekt ist erforderlich"

    • Ursache: Du hast Set bei einer nicht-Objektvariablen verwendet. Stelle sicher, dass whatToFind als String deklariert ist und nicht mit Set verwendet wird.
  • Fehler: "Spalte mit Wert wurde nicht gefunden"

    • Ursache: Überprüfe, ob die Spaltenüberschriften in beiden Blättern exakt übereinstimmen. Achte auf Leerzeichen und Groß-/Kleinschreibung.

Alternative Methoden

Falls du kein Makro verwenden möchtest, kannst du auch folgende Methoden in Excel ausprobieren:

  • Suchen und Ersetzen: Nutze die integrierte Suchen-Funktion, um die Spaltenüberschriften manuell zu suchen.
  • Filterfunktion: Setze Filter auf die Spaltenüberschriften, um gezielt die benötigten Daten anzuzeigen.

Praktische Beispiele

Hier sind einige praktische Szenarien, in denen du das Makro nutzen kannst:

  • Datenimport: Wenn du regelmäßig Daten aus verschiedenen Quell-Excel-Dateien importierst und die Spaltenüberschriften übereinstimmen.
  • Berichtserstellung: Wenn du Berichte erstellst, die bestimmte Spaltenüberschriften benötigen, kannst du das Makro zur Automatisierung verwenden.

Tipps für Profis

  • Nutze die Option Explicit Anweisung am Anfang deines Moduls, um sicherzustellen, dass alle Variablen deklariert sind. Das hilft, Fehler zu vermeiden.
  • Experimentiere mit der .Find Methode, um die Suche nach Spaltenüberschriften zu optimieren, z.B. durch Anpassung der Parameter wie lookat.

FAQ: Häufige Fragen

1. Kann ich das Makro für mehrere Tabellen gleichzeitig verwenden?
Ja, du kannst das Makro anpassen, indem du mehrere With-Blöcke für verschiedene Tabellen einfügst.

2. Was mache ich, wenn meine Spaltenüberschriften nicht exakt übereinstimmen?
Verwende die InStr-Funktion, um nach Teilstrings zu suchen, anstatt auf exakte Übereinstimmung zu bestehen.

3. Funktioniert dieses Makro in allen Excel-Versionen?
Das Makro sollte in den meisten modernen Excel-Versionen funktionieren, die VBA unterstützen, wie Excel 2010 und höher.

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