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

wenn bestimmtes Wortteil dann verschieben

Forumthread: wenn bestimmtes Wortteil dann verschieben

wenn bestimmtes Wortteil dann verschieben
SoulOpa
Hallo liebe Excel Gemeind
ich suche seit Tagen in einigen Foren um ein Problem zu lösen. Doch nun muss ich mich an euch wenden da ich absolut nicht weiter komme, und mir hier schon mehrmals super geholfen wurde, und mein Kopf bald am EXPLODIERT ist :-)
Also zu meinem Problem
ich habe eine Tabelle mit Rechnung erstellt die auch so weit funktioniert. Nun möchte ich wenn die Rechnung in die Tabelle Rechnungsverwaltung übertragen wurden, das wenn das Wort bezahlt erscheint in die Tabelle bezahlte Rechnung geschoben wird. Diese soll auch mit dem Wort Erinnerung Schicken zur Tabelle Mahnung passieren.
Alle Formatierungen brauchen beim verschieben in die Entsprechenden Tabellen nicht erhalten bleiben. Nur in der Rechnungsverwaltung sollte beim leeren der Zeilen die Formatierungen erhalten bleiben.
Beim verschieben währe es super wenn dieses dann untereinander verschoben wird.
Ich habe eine Test Mappe bei gelegt um mein Anliegen besser zu verdeutlichen.
https://www.herber.de/bbs/user/81827.xlsm
Danke an alle!
Grüße der Andi

Anzeige

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

Betreff
Benutzer
Anzeige
AW: wenn bestimmtes Wortteil dann verschieben
13.09.2012 16:36:53
fcs
Hallo SoulOpa,
hier 2 Makros, die du bei dir einbauen musst.
Gruß
Franz
Sub Move_bezahlte()
Dim Zeile As Long, ZeileZiel As Long
Dim wks_Q As Worksheet
Dim wks_Z As Worksheet
Set wks_Q = Worksheets("Rechnungsverwaltung")
Set wks_Z = Worksheets("bezahlte Rechnung")
With wks_Z
ZeileZiel = .Cells(.Rows.Count, 1).End(xlUp).Row
End With
With wks_Q
For Zeile = 2 To .Cells(.Rows.Count, 1).End(xlUp).Row
If .Cells(Zeile, 10) = "bezahlt" Then
ZeileZiel = ZeileZiel + 1
.Range(.Cells(Zeile, 1), .Cells(Zeile, 11)).Copy Destination:=wks_Z.Cells(ZeileZiel, 1)
With wks_Z
With .Range(.Cells(ZeileZiel, 1), .Cells(ZeileZiel, 11))
'Formeln durch Werte ersetzen
.Value = .Value
End With
End With
.Range(.Cells(Zeile, 1), .Cells(Zeile, 7)).ClearContents
.Range(.Cells(Zeile, 9), .Cells(Zeile, 9)).ClearContents
End If
Next Zeile
End With
End Sub
Sub Move_Mahnung()
Dim Zeile As Long, ZeileZiel As Long
Dim wks_Q As Worksheet
Dim wks_Z As Worksheet
Set wks_Q = Worksheets("Rechnungsverwaltung")
Set wks_Z = Worksheets("Mahnung")
With wks_Z
ZeileZiel = .Cells(.Rows.Count, 1).End(xlUp).Row
End With
With wks_Q
For Zeile = 2 To .Cells(.Rows.Count, 1).End(xlUp).Row
If .Cells(Zeile, 10) = "offen" And .Cells(Zeile, 11) = "Erinnerung schicken" Then
ZeileZiel = ZeileZiel + 1
.Range(.Cells(Zeile, 1), .Cells(Zeile, 11)).Copy Destination:=wks_Z.Cells(ZeileZiel, 1)
With wks_Z
With .Range(.Cells(ZeileZiel, 1), .Cells(ZeileZiel, 11))
'Formeln durch Werte ersetzen
'.Value = .Value
End With
End With
.Range(.Cells(Zeile, 1), .Cells(Zeile, 7)).ClearContents
.Range(.Cells(Zeile, 9), .Cells(Zeile, 9)).ClearContents
End If
Next Zeile
End With
End Sub

Anzeige
AW: wenn bestimmtes Wortteil dann verschieben
13.09.2012 16:51:55
SoulOpa
Hallo FCS,
mann super wie schaft man das so schnell? ich übe schon lange aber mit VBA komme ich nicht so weiter was mich auch richtig Ärgert :-( selbst mit dem Macro Recorder stelle ich mich schon echt Blöde an.
Also Dein Code Funktioniert super! da für tausend Dank.
mfg Andi
;
Anzeige
Anzeige

Infobox / Tutorial

Automatisches Verschieben von Rechnungen in Excel


Schritt-für-Schritt-Anleitung

Um Rechnungen basierend auf bestimmten Wortteilen automatisch in verschiedene Tabellen zu verschieben, kannst du die folgenden VBA-Makros verwenden. Diese sind speziell für eine Excel-Rechnungsverwaltung konzipiert und ermöglichen das Verschieben von Rechnungen in die Tabellen „bezahlte Rechnung“ und „Mahnung“.

  1. Öffne deine Excel-Datei mit der Rechnungsverwaltung.
  2. Öffne den VBA-Editor mit ALT + F11.
  3. Füge ein neues Modul hinzu: Rechtsklick auf „VBAProject (deine Datei)“ > Einfügen > Modul.
  4. Kopiere und füge den folgenden Code in das Modul ein:
Sub Move_bezahlte()
    Dim Zeile As Long, ZeileZiel As Long
    Dim wks_Q As Worksheet
    Dim wks_Z As Worksheet
    Set wks_Q = Worksheets("Rechnungsverwaltung")
    Set wks_Z = Worksheets("bezahlte Rechnung")
    With wks_Z
        ZeileZiel = .Cells(.Rows.Count, 1).End(xlUp).Row
    End With
    With wks_Q
        For Zeile = 2 To .Cells(.Rows.Count, 1).End(xlUp).Row
            If .Cells(Zeile, 10) = "bezahlt" Then
                ZeileZiel = ZeileZiel + 1
                .Range(.Cells(Zeile, 1), .Cells(Zeile, 11)).Copy Destination:=wks_Z.Cells(ZeileZiel, 1)
                With wks_Z
                    With .Range(.Cells(ZeileZiel, 1), .Cells(ZeileZiel, 11))
                        'Formeln durch Werte ersetzen
                        .Value = .Value
                    End With
                End With
                .Range(.Cells(Zeile, 1), .Cells(Zeile, 7)).ClearContents
                .Range(.Cells(Zeile, 9), .Cells(Zeile, 9)).ClearContents
            End If
        Next Zeile
    End With
End Sub

Sub Move_Mahnung()
    Dim Zeile As Long, ZeileZiel As Long
    Dim wks_Q As Worksheet
    Dim wks_Z As Worksheet
    Set wks_Q = Worksheets("Rechnungsverwaltung")
    Set wks_Z = Worksheets("Mahnung")
    With wks_Z
        ZeileZiel = .Cells(.Rows.Count, 1).End(xlUp).Row
    End With
    With wks_Q
        For Zeile = 2 To .Cells(.Rows.Count, 1).End(xlUp).Row
            If .Cells(Zeile, 10) = "offen" And .Cells(Zeile, 11) = "Erinnerung schicken" Then
                ZeileZiel = ZeileZiel + 1
                .Range(.Cells(Zeile, 1), .Cells(Zeile, 11)).Copy Destination:=wks_Z.Cells(ZeileZiel, 1)
                With wks_Z
                    With .Range(.Cells(ZeileZiel, 1), .Cells(ZeileZiel, 11))
                        'Formeln durch Werte ersetzen
                        .Value = .Value
                    End With
                End With
                .Range(.Cells(Zeile, 1), .Cells(Zeile, 7)).ClearContents
                .Range(.Cells(Zeile, 9), .Cells(Zeile, 9)).ClearContents
            End If
        Next Zeile
    End With
End Sub
  1. Schließe den VBA-Editor und kehre zu Excel zurück.
  2. Führe die Makros aus, indem du ALT + F8 drückst und die gewünschten Makros auswählst.

Häufige Fehler und Lösungen

  • Problem: Das Makro verschiebt keine Rechnungen.

    • Lösung: Überprüfe, ob die Spalten, die im Code referenziert werden (z.B. Spalte 10 für „bezahlt“), korrekt sind.
  • Problem: Formatierungen gehen verloren.

    • Lösung: Stelle sicher, dass du den Code entsprechend anpasst, um Formatierungen zu erhalten, wenn das gewünscht ist.

Alternative Methoden

Wenn du mit VBA nicht vertraut bist, kannst du auch die Filter- und Sortierfunktionen in Excel verwenden. Damit kannst du Daten manuell in die richtigen Tabellen verschieben. Alternativ kannst du auch Power Query nutzen, um Daten zu transformieren und zu laden.


Praktische Beispiele

  • Beispiel 1: Du hast eine Rechnungstabelle mit dem Wortteil „bezahlt“ in Spalte J. Das Makro „Move_bezahlte“ verschiebt diese Rechnungen in die „bezahlte Rechnung“-Tabelle.
  • Beispiel 2: Rechnungen mit dem Wortteil „Erinnerung schicken“ in Spalte K werden mit „Move_Mahnung“ in die Mahnungstabelle verschoben.

Tipps für Profis

  • Verwende Variablen für die Spaltennummern, um den Code flexibler zu gestalten.
  • Kommentiere den Code gut, damit du auch später nachvollziehen kannst, was jeder Schritt bewirken soll.
  • Nutze die Möglichkeit, mehrere Bedingungen in den If-Anweisungen zu kombinieren, um spezifischere Anforderungen zu erfüllen.

FAQ: Häufige Fragen

1. Wie kann ich die Makros speichern?
Aktiviere die Makros in den Excel-Optionen und speichere die Datei im Format „Excel Macro-Enabled Workbook“ (.xlsm).

2. Was ist ein anderes Wort für verschieben in Excel?
In Excel wird oft das Wort „übertragen“ oder „kopieren“ verwendet, wenn es um das Verschieben von Daten in andere Tabellen geht.

3. Wie kann ich einen bestimmten Wortteil erkennen?
Du kannst die Funktionen SEARCH oder FIND in Excel verwenden, um nach bestimmten Wortteilen in Zellen zu suchen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige