Daten kopieren, ergänzen und zurückkopieren
#1
Guten Abend liebes Forum,

Ich habe meine Rechnungsübersicht in welcher diverse Sachen stehen, Rechnungsnummer, Betrag, Fälligkeit etc...
im 2. Blatt habe ich meine Mahnliste welche aus der Rechnungsübersicht mittels Firmennamen gefilter wird.

auf dem Blatt "Mahnliste" in der Spalte E, F und G stehen Datum wann bereits der Kunde gemahnt wurde.
Wenn nun der nächste Mahnprozess fällig ist möchte ich in der Mahnliste ( Spalte E, F und G) die neuen Mahndatum ergänzen und danach mittels Button die ganze Liste ( oder wenn möglich) nur die SPalten E, F und G
in die Quelldatei ( zugeordnet zur korrekten Rechnungsnummer) zurückspeichern, oder kopieren.

Ich werde aber einfach nicht schlau wie ich dann diese Daten an die richtige Position, respektive in die richtige Zelle zur korrekten Rechnung zurückspeichern kann.

Ziel ist dass wenn ich das nächste mal die Mahnliste öffne, die neuen Daten dann auch aufgelistet werden damit ich eine bessere Übersicht habe wann was gemahnt wurde des gesuchten Kunden.


Wer kann mir auf die Sprünge helfen?

Liebe Grüsse

Mamamia


Angehängte Dateien
.xlsm   Daten aus Quelldatei kopieren, ergänzen und wieder zurückkopieren.xlsm (Größe: 51,3 KB / Downloads: 14)
Antworten Top
#2
Hallo Mamami,

zum Verständnis anhand Rechn. Nr. 2:

Rechnungsdatum: 16.01.2025
Fälligkeitsdatum:  30.01.2025
1. Mahnung vor Fälligkeitsdatum? am 27.01.2025
2. Mahnung: 28.02.2025
3. Mahnung...: 30.03.2025

ist es in der Schweiz üblich die 1. Mahnung vor dem Fälligkeitsdatum zu verschicken, oder soll die 1. Mahnung eine Zahlungserinnerung ohne Rechtsfolgen sein?

Zur Mahnliste: Diese soll vermutlich nur 1. Bedingung unbezahlte Rechnungen zeigen und 2. Bedingung 1. Mahnung ausgelöst.
Wenn Rechnungen bezahlt sind soll der Eintrag aus der Mahnliste verschwinden?

Wenn dies so richtig ist und du ja O365 nutzt braucht es kein VBA. Es reicht die Funktion FILTER() und SPALTENWAHL() und HSTAPELN().
Dies wäre dann im Blatt Mahnliste in Zelle A12 so:
Code:
=LET(xA;FILTER(Tabelle1;(Tabelle1[bezahlt am]="")*(Tabelle1[1. Mahnung]<>""));xB;WENN(INDEX(xA;;12)=0;"";INDEX(xA;;12));xC;WENN(INDEX(xA;;13)=0;"";INDEX(xA;;13));HSTAPELN(SPALTENWAHL(xA;1;4;6;5;11);xB;xC))
Warum in eine LET(): Damit in den Mahnspalten sta0 dann "" steht. Dies ist besser lesbar.

Gruß Uwe
Antworten Top
#3
Moin,

hier eine VBA-Lösung zum Übertragen der 3 Datumswerte:

Code:
Sub Datum_uebertragen()
Dim lng_rnr As Long
Dim lng_startzeile As Long
Dim rng_fund As Range
Dim obj_ws_mahnung As Worksheet
Dim obj_ws_rechnung As Worksheet

Set obj_ws_mahnung = ThisWorkbook.Worksheets("Mahnliste")
Set obj_ws_rechnung = ThisWorkbook.Worksheets("Rechnungsübersicht")

lng_startzeile = 12

With obj_ws_mahnung
    Do Until .Cells(lng_startzeile, 1) = ""
        lng_rnr = .Cells(lng_startzeile, 1)
        Set rng_fund = obj_ws_rechnung.Columns(2).Find(lng_rnr, LookIn:=xlValues)
        If Not rng_fund Is Nothing Then
            obj_ws_rechnung.Cells(rng_fund.Row, 12) = .Cells(lng_startzeile, 5)
            obj_ws_rechnung.Cells(rng_fund.Row, 13) = .Cells(lng_startzeile, 6)
            obj_ws_rechnung.Cells(rng_fund.Row, 14) = .Cells(lng_startzeile, 7)
        Else
            MsgBox "Rechnungsnummer: " & lng_rnr & " nicht gefunden"
        End If
        lng_startzeile = lng_startzeile + 1
    Loop
End With

Set obj_ws_mahnung = Nothing
Set obj_ws_rechnung = Nothing
End Sub


VG Regina
Antworten Top
#4
Liebe Forumfreunde,

Vielen lieben Dank für Eure Lösungen.... 

Uwe, ich habe da nur so so lala Daten eingetragen in die Musterdatei, natürlich auch in der Schweiz nicht üblich..) jedoch ist genau das was Regina geschrieben hat, dass was ich gesucht habe, trotzdem Danke ich Dir und kann dies bestimmt für andere Dinge noch gut gebrauchen.

Liebe Regina, vielen Dank, Deine Lösung ist für mich perfekt und super umsetzbar.

Wie immer eine mega tolle Gruppe, von welcher ich schon sehr viel lernen konnte und Verstehen konnte.

Ich wünsche allen einen tollen Tag und geniesst die Sonne...


Liebe Grüsse Mamamia
Antworten Top
#5
Hallo

nachdem ich meinen Fehler mit Hilfe der Kollegen korrigieren konnte hier noch eine Lösung.
Bei dieser Lösung wird, wie gewünscht, das Datum aus der Mahnliste zurückgeschrieben.
Das gilt aber nur für die Spalten 2. und 3. Mahnung!  Die 1. Mahnung  bleibt unverändert.
Wenn dir das weiterhilft kannst du den Code übernehmen. Er steht im Sheet Mahnliste.

mfg Gast 123


Angehängte Dateien
.xlsm   Daten kopieren, ergänzen und zurückkopieren F.xlsm (Größe: 56,45 KB / Downloads: 4)
Antworten Top
#6
Hallo,

hier mal noch ein Weg übers Listobjekt.

.xlsm   Daten aus Quelldatei kopieren, ergänzen und wieder zurückkopieren(1).xlsm (Größe: 51,59 KB / Downloads: 3)

Gruß Uwe
Antworten Top
#7
Hallo,

da ja O365 genutzt wird habe ich das Filtern mit der Funktion FILTER() im Evaluate verwendet, was natürlich sehr wenig Code braucht und sehr schnell ist. Dann habe ich aus der Zieltabelle ein Listobjekt gemacht.

das wäre dann so:
Code:
Sub Daten_abrufen()
    Dim arr, treffer&
    treffer = WorksheetFunction.CountIfs(Range("Tabelle1[NAme Firma]"), Tabelle2.Range("NAMEFIRMA"), Range("Tabelle1[bezahlt/offen]"), "offen")
    arr = Evaluate("FILTER(Tabelle1, (Tabelle1[NAme Firma]=""" & Tabelle2.Range("NAMEFIRMA") & """)*(Tabelle1[bezahlt/offen]=""offen""))")
    arr = Application.Index(arr, Evaluate("row(1:" & UBound(arr, 1) & ")"), Array(1, 4, 6, 5, 11, 12, 13))
    Application.EnableEvents = False
    With Tabelle2.ListObjects(1)
        If Not .DataBodyRange Is Nothing Then .DataBodyRange.Delete
        If treffer = 1 Then
            .ListRows.Add.Range.Resize(1, 7) = arr
        Else
            .ListRows.Add.Range.Resize(UBound(arr), 7) = arr
        End If
    End With
    Application.EnableEvents = True
End Sub

.xlsm   Daten aus Quelldatei kopieren, ergänzen und wieder zurückkopieren (mit Funktion Filter).xlsm (Größe: 53,69 KB / Downloads: 3)


Gruß Uwe
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste