VBA Letzte Tabellenwerte kopieren und am Ende einer Tabelle einfügen
#1
Hallo,

ich habe schon einiges gelesen, was ähnlich meiner Frage geklungen hat, allerdings hat das bisher nicht zum Erfolg geführt, daher meine Frage:

Ich habe im Tabellenblatt "Uebersicht" Werte in den Spalten B, C, D. Dabei wird täglich, um eine Zeile nach unten verrutscht, der aktuelle Wert eingetragen. Nun soll immer der aktuellste und damit am weitesten unten stehende Wert aus den genannten Spalten in mehrere Tabellenblätter kopiert werden und dort immer am Ende einer Spalte angefügt werden, sodass auch dort die Historie zu erkennen ist. Beispiel:

Tabellenblatt "Uebersicht"
A B C
1 2 3
4 5 6
7 8 9 <-- das soll kopiert werden, also immer die letzte Zeile

Tabellenblatter "Kunde1"
A B C
1 2 3
4 5 6
7 8 9 <-- die kopierten Werte aus "Uebersicht" sollen am Ende der Tabelle eingetragen werden, zudem soll in Spalte D das aktuelle Datum eingetragen werden

Wie kann ich das lösen? Vielen Dank im Voraus.
Top
#2
Hallo,
leider lässt sich das nur per VBA lösen. Aber dazu brauch man das Sheet um sowas ein zu bauen. Also du müsstet Dir schon die Mühe machen eine Demo Version hier hoch zuladen.
Grüße aus Nürnberg
Armin
Ich benutze WIN 10 (64bit) und Office 19 (32bit)
Top
#3
(06.08.2018, 15:10)EbyAS schrieb: Hallo,
leider lässt sich das nur per VBA lösen. Aber dazu brauch man das Sheet um sowas ein zu bauen. Also du müsstet Dir schon die Mühe machen eine Demo Version hier hoch zuladen.

Hallo EbyAS,

alles klar, vielen Dank für deine Bemühungen! Siehe anbei.


Angehängte Dateien
.xlsx   DemoVersion.xlsx (Größe: 18,79 KB / Downloads: 4)
Top
#4
Zitat:Ich habe im Tabellenblatt "Uebersicht" Werte in den Spalten B, C, D.

Tabellenblatt "Uebersicht"
A B C
1 2 3

Zunächst möchten wir erst mal Ordnung schaffen.  In Deiner Demo existiert keine Tabelle "Übersicht" also gehe ich davon aus das die Tabelle1 diese sein soll! Denn wenn ich Bezug auf "Tabelle1" nehme findet er im "Original" dann natürlich keine Tabelle "Übersdicht". Genauso verhält es sich mit den Spalten B,C,D oder A, B,C  was soll ich benutzen?
Grüße aus Nürnberg
Armin
Ich benutze WIN 10 (64bit) und Office 19 (32bit)
Top
#5
(06.08.2018, 15:36)EbyAS schrieb: Zunächst möchten wir erst mal Ordnung schaffen.  In Deiner Demo existiert keine Tabelle "Übersicht" also gehe ich davon aus das die Tabelle1 diese sein soll! Denn wenn ich Bezug auf "Tabelle1" nehme findet er im "Original" dann natürlich keine Tabelle "Übersdicht". Genauso verhält es sich mit den Spalten B,C,D oder A, B,C  was soll ich benutzen?

Sorry, das hatte ich in der Eile vergessen umzubenennen. Bitte nutze es so, wie es jetzt in der Datei ist. Ich denke, das ist am einfachsten. Ich denke, ggf. den Code um einzelne Spalten anzupassen, traue ich mir zu. Vielen herzlichen Dank. Smile
Top
#6
Hallo,
hier ein Versuch. Bitte beachten es müssen 3 Werte vorhanden sein sonst passiert garnichts. Also in Spalte A,B und C nach der letzeten Eingabe (Spalte C) wird die Zeile Übertragen in Klient(n).
Wichtig! Es darf keine Tabelle mit irgend was existieren, diese würde überschrieben. Nur für den Fall, dass das Original weitere Seiten auser Klient(n) und Uebersicht hat. Das müsste im Code berücksichtigt werden. Übrigens habe ich nicht "Übersicht" sondern "Uebersicht" ohne Umlaut als Tabellen-Namen verwandt.


Angehängte Dateien
.xlsm   DemoVersion.xlsm (Größe: 27,88 KB / Downloads: 4)
Grüße aus Nürnberg
Armin
Ich benutze WIN 10 (64bit) und Office 19 (32bit)
Top
#7
Klasse, so hatte ich mir das vorgestellt. Tausend Dank!!  :19:
Top
#8
Hi,

hier mal eine Alternative, die nur einmal am Tag das Kopieren zuläßt:


Code:
Sub Test()
Dim loLetzte As Long
Dim loLetzte2 As Long
Dim loA As Long
Dim loB As Long
loLetzte2 = Sheets("Klient1").Cells(Rows.Count, 1).End(xlUp).Row
If Sheets("Klient1").Cells(loLetzte2, 1) = Date Then Exit Sub
With Sheets("Tabelle1")
    loLetzte = .Cells(Rows.Count, 1).End(xlUp).Row
    '.Range(.Cells(loLetzte, 1), .Cells(loLetzte, 3)).Copy
    For loA = 1 To Sheets.Count
        If Sheets(loA).Name <> "Tabelle1" Then
            loLetzte2 = Sheets(loA).Cells(Rows.Count, 1).End(xlUp).Row + 1
            Sheets(loA).Cells(loLetzte2, 1) = Date
            For loB = 1 To 3
                Sheets(loA).Cells(loLetzte2, loB + 1) = .Cells(loLetzte, loB)
            Next
        End If
    Next
End With
End Sub
Gruß

Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Top


Gehe zu:


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