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

Zellen verschieben - Makro gesucht

Forumthread: Zellen verschieben - Makro gesucht

Zellen verschieben - Makro gesucht
Gerhard
Guten Morgen da draussen...
Ich habe ein Sheet erhalten das wie folgt aufgebaut ist:
Spalte A steht entweder Send oder Receive
Spalte B steht ein Datum
Spalte C steht Text.
Ich möchte nun alle Zeilen in denen Receive in Spalte A steht das Datum und den Text nach Spalte D un E verschieben...
Kann mir jemand n kleines Makro basteln, damit ich ned jede Zeile (Ca.5000) mit Hand dahinverschieben muss?
Mit dem Macrorecorder habe ich es versucht, allerdings zeichnet dieser ja einen festen Zellbezug auf und dieser ändert sich ja bei jeder Zeile, also zumindest die Zeilennummern...
Vielen lieben Dank
Gerhard
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Zellen verschieben - Makro gesucht
31.07.2011 10:31:41
Josef

Hallo Gerhard,
das geht z. B. so.
' **********************************************************************
' Modul: Modul2 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Sub moveRight()
  Dim rng As Range, rngMove As Range
  
  For Each rng In Range("A:A").SpecialCells(xlCellTypeConstants)
    If rng = "Receive" Then
      If rngMove Is Nothing Then
        Set rngMove = rng.Offset(0, 1).Resize(1, 2)
      Else
        Set rngMove = Union(rngMove, rng.Offset(0, 1).Resize(1, 2))
      End If
    End If
  Next
  
  If Not rngMove Is Nothing Then rngMove.Insert Shift:=xlToRight
  
  Set rngMove = Nothing
  Set rng = Nothing
End Sub



« Gruß Sepp »

Anzeige
AW: Zellen verschieben - Makro gesucht
31.07.2011 10:35:16
Martin
Hallo Gerhard,
so sollte es klappen:
Sub Receive()
Dim i As Long
For i = 1 To 5000
If Cells(i, 1) = "Receive" Then
Range(Cells(i, 2), Cells(i, 3)).Cut Destination:=Cells(i, 4)
End If
Next i
End Sub
Viele Grüße
Martin
Vielen Dank!!!!! owT
31.07.2011 11:08:56
Gerhard
.
;
Anzeige
Anzeige

Infobox / Tutorial

Zellen verschieben mit Makros in Excel


Schritt-für-Schritt-Anleitung

Um die Zellen in Excel basierend auf dem Inhalt der Spalte A zu verschieben, kannst du ein einfaches Makro verwenden. Hier ist eine Schritt-für-Schritt-Anleitung:

  1. Öffne Excel und lade die Arbeitsmappe, in der du die Zellen verschieben möchtest.

  2. Drücke ALT + F11, um den VBA-Editor zu öffnen.

  3. Füge ein neues Modul hinzu:

    • Klicke auf Einfügen > Modul.
  4. Kopiere und füge den folgenden VBA-Code in das Modul ein:

    Sub moveRight()
       Dim rng As Range, rngMove As Range
    
       For Each rng In Range("A:A").SpecialCells(xlCellTypeConstants)
           If rng = "Receive" Then
               If rngMove Is Nothing Then
                   Set rngMove = rng.Offset(0, 1).Resize(1, 2)
               Else
                   Set rngMove = Union(rngMove, rng.Offset(0, 1).Resize(1, 2))
               End If
           End If
       Next
    
       If Not rngMove Is Nothing Then rngMove.Insert Shift:=xlToRight
    End Sub
  5. Schließe den VBA-Editor und gehe zurück zu Excel.

  6. Führe das Makro aus:

    • Drücke ALT + F8, wähle moveRight und klicke auf Ausführen.

Das Makro verschiebt alle Daten aus den Spalten B und C in die Spalten D und E, wenn in Spalte A "Receive" steht.


Häufige Fehler und Lösungen

  • Problem: Das Makro funktioniert nicht.

    • Lösung: Stelle sicher, dass die Makros in Excel aktiviert sind. Gehe zu Datei > Optionen > Trust Center > Einstellungen für das Trust Center und aktiviere die Makros.
  • Problem: Es werden nicht alle Zellen verschoben.

    • Lösung: Überprüfe die Daten in Spalte A, um sicherzustellen, dass "Receive" genau so geschrieben ist (keine zusätzlichen Leerzeichen).

Alternative Methoden

Wenn du kein Makro verwenden möchtest, kannst du auch die Filterfunktion in Excel nutzen:

  1. Markiere deine Daten und gehe zu Daten > Filter.
  2. Setze einen Filter auf Spalte A und wähle "Receive" aus.
  3. Markiere die gefilterten Zeilen in Spalte B und C, kopiere sie und füge sie in Spalte D und E ein.
  4. Entferne den Filter, um die restlichen Daten wieder anzuzeigen.

Praktische Beispiele

Hier ist ein weiteres praktisches Beispiel, das du anpassen kannst:

Sub Receive()
    Dim i As Long
    For i = 1 To 5000
        If Cells(i, 1) = "Receive" Then
            Range(Cells(i, 2), Cells(i, 3)).Cut Destination:=Cells(i, 4)
        End If
    Next i
End Sub

Mit diesem Makro schneidest du die Daten in Spalte B und C und fügst sie direkt in Spalte D ein.


Tipps für Profis

  • Verwende Option Explicit: Dies zwingt dich, alle Variablen zu deklarieren, was Fehler reduziert.
  • Fehlerbehandlung: Ergänze deinen Code mit On Error Resume Next, um unerwartete Fehler elegant zu handhaben.
  • Makros dokumentieren: Kommentiere deinen Code, um später besser nachvollziehen zu können, was jeder Abschnitt bewirken soll.

FAQ: Häufige Fragen

1. Wie kann ich das Makro anpassen, um andere Bedingungen zu verwenden?
Du kannst die Bedingung in der If-Anweisung ändern, um andere Werte oder Kriterien zu prüfen.

2. Ist es möglich, das Makro auf eine bestimmte Anzahl von Zeilen zu beschränken?
Ja, ändere die Schleife von For Each zu For i = 1 To [deine gewünschte Zeilenzahl], um die Anzahl der bearbeiteten Zeilen zu begrenzen.

3. Funktioniert das Makro in allen Excel-Versionen?
Ja, das Makro ist für Excel-Versionen ab 2007 geeignet, solange die VBA-Funktionalität unterstützt wird.

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