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

Zeilen mit bestimmten Inhalt verschieben

Forumthread: Zeilen mit bestimmten Inhalt verschieben

Zeilen mit bestimmten Inhalt verschieben
29.11.2012 09:44:11
Mandy
Hallo,
ich möchte folgende Aufgabe per VBA erledigen lassen:
In meinem Tabellenblatt "Daten" habe ich unter anderem eine Spalte "Bemerkung" (Spaltenkopf in Zeile 1). Diese Spalte kann bei jedem Import von Daten an anderer Stelle sein (jeweils eine andere Spalte).
Wie kann ich per VBA alle Datensätze, die in der Spalte "Bemerkung" einen String "Storno" haben, ausschneiden (die betroffenen Zeilen sollen danach richtig gelöscht werden) und in das Datenblatt "Ablage" an der ersten freien Zeile wieder einfügen ? Also die Datensätze praktisch einfach verschieben.
Das Problem dürfte aber sein, wie erkenne ich die Position der Spalte "Bemerkung"
Danke für Eure Hilfe
Gruß
Mandy

Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zeilen mit bestimmten Inhalt verschieben
29.11.2012 09:59:31
Rudi
Hallo,
teste mal
Sub aaaaa()
Dim iSpalte As Integer, rngStorno As Range, rngC As Range
With Sheets("Daten")
iSpalte = Application.Match(.Rows(1), "Bemerkung", 0)
For Each rngC In .Range(.Cells(2, iSpalte), .Cells(Rows.Count, iSpalte).End(xlUp))
If rngC = "Storno" Then
If rngStorno Is Nothing Then
Set rngStorno = rngC
Else
Set rngStorno = Union(rngStorno, rngC)
End If
End If
Next
End With
If Not rngStorno Is Nothing Then
With rngStorno.EntireRow
.Copy Sheets("Ablage").Cells(Rows.Count, 1).End(xlUp).Offset(1)
.Delete
End With
End If
End Sub
Gruß
Rudi

Anzeige
AW: Zeilen mit bestimmten Inhalt verschieben
29.11.2012 13:58:32
Mandy
Hallo Rudi,
Danke.
In der Zeile
iSpalte = Application.Match(.Rows(1), "Bemerkung", 0)
kommt ein Laufzeitfehler 13
Tabellenblattname und String "Bemerkung" stimmen aber.
hast DU eine Idee ?
Gruß
Mandy

AW: Zeilen mit bestimmten Inhalt verschieben
29.11.2012 14:37:13
Rudi
Hallo,
hast DU eine Idee ?
ja. Genau umgekehrt.
iSpalte = Application.Match("Bemerkung", .Rows(1), 0)
Gruß
Rudi

Anzeige
Funktioniert, Vielen Dank auch :-) owT
30.11.2012 12:56:08
Mandy
Anzeige
Anzeige

Infobox / Tutorial

Zeilen mit bestimmten Inhalt in Excel verschieben


Schritt-für-Schritt-Anleitung

Um Zeilen mit einem bestimmten Inhalt, wie beispielsweise "Storno", in Excel per VBA zu verschieben, kannst du die folgende Schritt-für-Schritt-Anleitung befolgen:

  1. Öffne dein Excel-Dokument und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Erstelle ein neues Modul, indem du mit der rechten Maustaste auf „VBAProject (deinDateiname)“ klickst und „Einfügen“ > „Modul“ wählst.

  3. Kopiere den folgenden VBA-Code in das Modul:

    Sub VerschiebeZeilen()
       Dim iSpalte As Integer, rngStorno As Range, rngC As Range
       With Sheets("Daten")
           iSpalte = Application.Match("Bemerkung", .Rows(1), 0)
           For Each rngC In .Range(.Cells(2, iSpalte), .Cells(Rows.Count, iSpalte).End(xlUp))
               If rngC = "Storno" Then
                   If rngStorno Is Nothing Then
                       Set rngStorno = rngC
                   Else
                       Set rngStorno = Union(rngStorno, rngC)
                   End If
               End If
           Next
       End With
       If Not rngStorno Is Nothing Then
           With rngStorno.EntireRow
               .Copy Sheets("Ablage").Cells(Rows.Count, 1).End(xlUp).Offset(1)
               .Delete
           End With
       End If
    End Sub
  4. Schließe den VBA-Editor und rufe das Makro mit ALT + F8 auf. Wähle VerschiebeZeilen und klicke auf „Ausführen“.

Diese Schritte helfen dir, alle Zeilen, die in der Spalte "Bemerkung" den Inhalt "Storno" haben, zu verschieben.


Häufige Fehler und Lösungen

  1. Laufzeitfehler 13: Dieser Fehler kann auftreten, wenn der Suchbegriff nicht korrekt ist. Stelle sicher, dass die Zeile im Match-Befehl so aussieht:

    iSpalte = Application.Match("Bemerkung", .Rows(1), 0)
  2. Spalte nicht gefunden: Wenn die Spalte "Bemerkung" nicht gefunden wird, überprüfe den Spaltenkopf in Zeile 1 und dessen Schreibweise.

  3. Leere Zellen: Achte darauf, dass in der Spalte "Bemerkung" keine leeren Zellen vorhanden sind, da dies zu unerwarteten Ergebnissen führen kann.


Alternative Methoden

Neben VBA kannst du auch mit Excel-Formeln arbeiten, um Daten zu filtern und zu verschieben. Eine Möglichkeit ist, die Filter-Funktion zu nutzen:

  1. Wähle das gesamte Datenblatt aus.
  2. Gehe zu „Daten“ > „Filter“.
  3. Setze den Filter auf die Spalte "Bemerkung" und wähle "Storno" aus.
  4. Kopiere die gefilterten Zeilen und füge sie in das Blatt "Ablage" ein.

Diese Methode ist weniger automatisiert, eignet sich aber für kleinere Datensätze.


Praktische Beispiele

Angenommen, du hast folgende Datensätze in deinem Blatt „Daten“:

ID Bemerkung
1 Storno
2 Verkauf
3 Storno

Nach Ausführung des Makros wird die Tabelle im Blatt „Ablage“ so aussehen:

ID Bemerkung
1 Storno
3 Storno

Die Zeilen mit „Storno“ wurden erfolgreich verschoben.


Tipps für Profis

  • Code anpassen: Du kannst den Code leicht anpassen, um nach anderen Inhalten zu suchen, indem du einfach den String "Storno" änderst.
  • Ereignisgesteuertes Makro: Du kannst das Makro automatisch ausführen lassen, wenn du Daten importierst, indem du das Makro in das entsprechende Ereignis, wie Workbook_Open, einfügst.
  • Sicherungskopien erstellen: Erstelle immer eine Sicherung deines Arbeitsblattes, bevor du Makros ausführst, um Datenverlust zu vermeiden.

FAQ: Häufige Fragen

1. Kann ich das Makro in einer älteren Excel-Version verwenden?
Ja, der VBA-Code sollte in den meisten Excel-Versionen ab Excel 2007 funktionieren.

2. Was passiert, wenn mehrere Spalten "Bemerkung" existieren?
Das Makro sucht immer nur nach der ersten gefundenen Spalte mit dem Namen "Bemerkung". Stelle sicher, dass der Name eindeutig ist.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige