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

Forumthread: Schleife - Spalte kopieren wenn Wert in Zeile

Schleife - Spalte kopieren wenn Wert in Zeile
Jonathan
Hallo zusammen,
ich bekomms einfach nicht hin...
Ich möchte in einer Tabelle die Zeile 4 nach dem Wert "Anzahl" durchsuchen lassen. Der Wert kommt in der Zeile 4 häufiger vor.
Ist der Wert "Anzahl" gefunden soll die dazugehörige Spalte (ab Zeile 5 - zum letzten Wert in der Spalte) kopiert und an gleicher Stelle als Werte (Inhalte einfügen -> Werte) eingefügt werden.
Das ganze soll für jede Spalte wiederholt werden, die in Zeile 4 den Wert "Anzahl" stehen hat.
Bisher habe ich folgenden Code welcher aber nicht funktioniert:
Sub markieren()
Dim lSpalte  As Long
For lSpalte = Cells(3, 1) To Cells(3, Columns.Count).End(xlToRight).Column
If InStr(Cells(3, lSpalte), "Anzahl") > 0 Then
Range(Cells(4, lSpalte).End(xlDown)).Copy
Cells(4, lSpalte).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks  _
_
:=False, Transpose:=False
End If
Next lSpalte
End Sub

Hier noch die Bsp.Datei:
https://www.herber.de/bbs/user/67692.xls
Vielen Dank für eure Hilfe
Gruß
Jonathan
Anzeige

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

Betreff
Benutzer
Anzeige
AW: Schleife - Spalte kopieren wenn Wert in Zeile
02.02.2010 16:08:02
Rudi
Hallo
probier mal:
Sub markieren()
Dim lSpalte  As Long
For lSpalte = 1 To Cells(4, Columns.Count).End(xlToLeft).Column
If InStr(Cells(4, lSpalte), "Anzahl") > 0 Then
Range(Cells(5, lSpalte), Cells(5, lSpalte).End(xlDown)).Copy
Cells(5, lSpalte).PasteSpecial _
Paste:=xlPasteValues, _
Operation:=xlNone, _
SkipBlanks:=False, _
Transpose:=False
Application.CutCopyMode = False
End If
Next lSpalte
End Sub

Gruß
Rudi
Anzeige
AW: Schleife - Spalte kopieren wenn Wert in Zeile
02.02.2010 16:12:28
Jonathan
Hallo Rudi,
vielen Dank - funktioniert nun einwandfrei.
Gruß
Jonathan
;

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, wenn Wert in Zeile gefunden wird


Schritt-für-Schritt-Anleitung

Um die Inhalte von Spalten in Zeilen zu kopieren, kannst du den folgenden VBA-Code verwenden. Dieser Code sucht in Zeile 4 nach dem Wert "Anzahl" und kopiert die entsprechenden Spalteninhalte ab Zeile 5 bis zur letzten befüllten Zeile:

  1. Öffne deine Excel-Datei und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Klicke auf Einfügen und dann auf Modul, um ein neues Modul zu erstellen.
  3. Kopiere den folgenden Code in das Modul:
Sub markieren()
    Dim lSpalte As Long
    For lSpalte = 1 To Cells(4, Columns.Count).End(xlToLeft).Column
        If InStr(Cells(4, lSpalte), "Anzahl") > 0 Then
            Range(Cells(5, lSpalte), Cells(5, lSpalte).End(xlDown)).Copy
            Cells(5, lSpalte).PasteSpecial _
                Paste:=xlPasteValues, _
                Operation:=xlNone, _
                SkipBlanks:=False, _
                Transpose:=False
            Application.CutCopyMode = False
        End If
    Next lSpalte
End Sub
  1. Schließe den VBA-Editor und kehre zu Excel zurück.
  2. Drücke ALT + F8, wähle markieren aus und klicke auf Ausführen.

Dieser Code wird für jede Spalte in Zeile 4, die den Wert "Anzahl" enthält, die entsprechenden Werte ab Zeile 5 kopieren und die Inhalte dabei als Werte einfügen.


Häufige Fehler und Lösungen

  • Fehler: "Laufzeitfehler 1004 – Anwendung oder Objekt definieren"

    • Lösung: Überprüfe, ob die Zeile 4 tatsächlich Werte enthält und ob der Bereich korrekt definiert ist. Achte darauf, dass die Zellen nicht leer sind.
  • Fehler: "Falsche Anzahl von Argumenten"

    • Lösung: Stelle sicher, dass du alle erforderlichen Argumente in der PasteSpecial-Methode korrekt angegeben hast.
  • Leere Spalte wird nicht kopiert

    • Lösung: Der Code kopiert nur die Zellen, die nicht leer sind. Stelle sicher, dass die Zellen in der Spalte, die du kopieren möchtest, tatsächlich Werte enthalten.

Alternative Methoden

Wenn du den Inhalt von Spalten in Zeilen ohne VBA kopieren möchtest, kannst du auch die SVERWEIS-Funktion oder INDEX und VERGLEICH verwenden. Diese Methoden erfordern jedoch, dass du manuell die Suchkriterien eingibst und sind eventuell weniger effizient bei großen Datenmengen.


Praktische Beispiele

Angenommen, du hast folgende Daten in deiner Excel-Tabelle:

A B C D
4 ID Anzahl Preis Anzahl
5 1 10 20 30
6 2 15 25 35
7 3 20 30 40

Nach der Ausführung des Codes wird die Tabelle so aussehen:

A B C D
4 ID Anzahl Preis Anzahl
5 1 10 20 30
6 2 15 25 35
7 3 20 30 40

Der Wert "Anzahl" wird in den Spalten B und D gefunden, und die entsprechenden Werte werden in Zeile 5 eingefügt.


Tipps für Profis

  • Optimiere deine Schleife, indem du nur die relevanten Spalten durchsuchst, um die Ausführungsgeschwindigkeit zu erhöhen.
  • Nutze Option Explicit am Anfang deines Moduls, um sicherzustellen, dass alle Variablen deklariert sind. Dies hilft bei der Fehlersuche.
  • Wenn du mit großen Datenmengen arbeitest, überlege, die Bildschirmaktualisierung und Berechnung während der Ausführung des Codes auszuschalten:
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
' Dein Code hier
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic

FAQ: Häufige Fragen

1. Frage: Wie kann ich den Code anpassen, um Werte in einer anderen Zeile zu kopieren?
Antwort: Ändere einfach die Cells(5, lSpalte)-Referenz im Code zu der Zeile, in die du die Werte kopieren möchtest.

2. Frage: Funktioniert dieser Code auch in Excel 2010?
Antwort: Ja, der VBA-Code ist mit Excel 2010 und neueren Versionen kompatibel.

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