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

Forumthread: For each cell in Range - Spalte kopieren

For each cell in Range - Spalte kopieren
22.06.2016 11:46:25
VictorB
Schönen guten Tag,
mein Makro soll eine Zeile nach einem bestimmten Wert ("aktiv", kommt mehrfach vor) durchsuchen und den Wert aus der obersten Zeile der gleichen Spalte in ein anderes Tabellenblatt (SFCGFE) kopieren. Wie kann ich auf die Spalte der jeweils gefundenen Werte zurückgreifen? Zu Testzwecken (ob die Schleife funktioniert) kopiere ich momentan lediglich das Wort aktiv in das zweite Tabellenblatt.
i = 0
For Each cell In Rohdaten.Range("B2:AB2")
If cell.Value = "aktiv" Then
SFCGFE.Cells(3, 2 + i).Value = "aktiv"
i = i + 1
End If
Next

Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: For each cell in Range - Spalte kopieren
22.06.2016 12:23:35
Michael
Hallo!
So?
Sub a()
Dim Bereich As Range
Dim Zelle As Range
Set Bereich = Rohdaten.Range("B2:AB2")
For Each Zelle In Bereich
If Zelle.Value = "aktiv" Then
SFCGFE.Cells(3, Zelle.Column).Value = Zelle.End(xlUp).Value
End If
Next Zelle
End Sub
LG
Michael
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Spalte kopieren mit For Each in Excel VBA


Schritt-für-Schritt-Anleitung

Um eine Spalte in Excel mithilfe von VBA zu kopieren, kannst du die For Each Schleife verwenden. Folgendes Beispiel zeigt, wie du alle Zellen in einem bestimmten Bereich durchläufst und bei einem bestimmten Wert (z.B. "aktiv") die Werte in ein anderes Tabellenblatt kopierst.

  1. Öffne das VBA-Editor-Fenster in Excel (ALT + F11).
  2. Erstelle ein neues Modul (Rechtsklick auf „VBAProject“, dann „Einfügen“ > „Modul“).
  3. Füge den folgenden Code ein:
Sub KopiereSpalte()
    Dim Bereich As Range
    Dim Zelle As Range
    Dim i As Integer
    i = 0
    Set Bereich = Rohdaten.Range("B2:AB2")

    For Each Zelle In Bereich
        If Zelle.Value = "aktiv" Then
            SFCGFE.Cells(3, Zelle.Column).Value = Zelle.End(xlUp).Value
            i = i + 1
        End If
    Next Zelle
End Sub
  1. Schließe den VBA-Editor und führe das Makro aus.

Dieser Code durchläuft jede Zelle in dem definierten Bereich und kopiert den Wert der obersten Zelle der jeweiligen Spalte, wenn der Wert "aktiv" gefunden wird.


Häufige Fehler und Lösungen

  • Fehler: "Object variable or With block variable not set"

    • Lösung: Stelle sicher, dass du den Bereich korrekt definiert hast und dass das Tabellenblatt „Rohdaten“ existiert.
  • Fehler: "Index out of range"

    • Lösung: Überprüfe, ob die Zellen, die du ansprichst, innerhalb des definierten Bereichs liegen.

Alternative Methoden

Wenn du keine VBA-Makros verwenden möchtest, kannst du auch Formeln oder Filter verwenden.

  • Formel: Du kannst in einer neuen Spalte mit einer WENN-Funktion arbeiten, um die Werte zu extrahieren.

    Beispiel:

    =WENN(B2="aktiv"; C2; "")
  • Filter: Du kannst die Daten einfach filtern, um nur die Zeilen mit "aktiv" anzuzeigen und dann manuell kopieren.


Praktische Beispiele

In diesem Beispiel wurde ein Bereich von Zellen (B2:AB2) durchsucht. Du kannst diesen Bereich leicht anpassen, um andere Zeilen oder Spalten zu durchsuchen.

Hier ein weiteres Beispiel, das sich auf die Auswahl einer Zelle bezieht:

Sub KopiereAuswahl()
    Dim Zelle As Range
    For Each Zelle In Selection
        If Zelle.Value = "aktiv" Then
            MsgBox "Wert gefunden in Zelle: " & Zelle.Address
        End If
    Next Zelle
End Sub

Tipps für Profis

  • Verwende die Option Explicit Anweisung am Anfang deines Moduls, um sicherzustellen, dass alle Variablen deklariert sind.
  • Nutze Application.ScreenUpdating = False vor dem Start deiner Schleife, um die Ausführungsgeschwindigkeit zu erhöhen. Vergiss nicht, es am Ende wieder auf True zu setzen.

FAQ: Häufige Fragen

1. Wie kann ich die Schleife anpassen, um nach anderen Werten zu suchen? Du kannst den Wert in der If-Bedingung ändern, z.B. If Zelle.Value = "deinWert" Then.

2. Kann ich die Schleife auf mehrere Spalten gleichzeitig anwenden? Ja, indem du den Bereich entsprechend anpasst, z.B. Rohdaten.Range("B2:Z100") und die Schleife entsprechend modifizierst.

3. Ist es möglich, die Zeile zu ändern, in die die Werte kopiert werden? Ja, ändere einfach die Zeilennummer in SFCGFE.Cells(3, Zelle.Column).Value auf die gewünschte Zeile.

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