Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.04.2024 14:18:05
28.04.2024 13:43:14
Anzeige
Archiv - Navigation
1932to1936
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Aktuelle Kalenderwoche aus Datensatz

Aktuelle Kalenderwoche aus Datensatz
19.06.2023 13:45:55
Chrisi

Hallo liebe Excel Community,

ich programmiere gerade ein Makro und bin jetzt bei folgendem Punkt:

Ich habe einen Datensatz in meinem Tabellenblatt "Alle_Daten" wobei je weiter man nach unten geht der Datensatz immer weiter zum aktuellen Datum kommt.

Ich habe noch ein Tabellenblatt welches "Daten_pro_Woche" heißt, wie vielleicht schon aus dem Namen zu merken ist soll in dieses Tabellenblatt immer dann wenn das Makro ausgeführt wird, der Datensatz für die aktuelle Woche hineingeschrieben werden (IMMER von Montag weg bis zum aktuellen Wochentag (wenn Makro am Mittwoch gestartet wird, dann von Montag bis Mittwoch, wenn es am Freitag gestartet wird dann von Montag bis Freitag.)

Im Blatt "Alle_Daten" findet man in der Spalte "A" immer das Datum was für die Berechnung nötig ist.

Wenn sonstige Infos nötig sind, bitte einfach bescheid geben.

Vielen Dank im Voraus.

MfG
Chrisi

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Aktuelle Kalenderwoche aus Datensatz
19.06.2023 15:20:49
Pappawinni
Keine Ahnung, ob ich das richtig verstanden habe, eine Beispieldatei wäre gut gewesen.

Option Explicit

Sub unit()

Dim wksWeek As Worksheet
Dim wksAll As Worksheet
Dim dtCurrent As Date, dtMonday As Date
Dim i As Long

Set wksAll = ThisWorkbook.Worksheets("Alle_Daten")
Set wksWeek = ThisWorkbook.Worksheets("Daten_pro_Woche")

dtCurrent = wksAll.Cells(Rows.Count, 1).End(xlUp).Value
dtMonday = DateAdd("d", -((Weekday(dtCurrent) + 5) Mod 7), dtCurrent)

wksWeek.Range("A2:A8").ClearContents

For i = 0 To DateDiff("d", dtMonday, dtCurrent)
   wksWeek.Range("A2").Offset(i, 0).Value = DateAdd("d", i, dtMonday)
Next

End Sub


Anzeige
AW: Aktuelle Kalenderwoche aus Datensatz
20.06.2023 14:16:28
Chrisi
Hallo,

nach dem Ausführen des Makros schreibt er mir ein Datum mit Uhrzeit in Sheet("Daten_pro_Woche").Range("A1) und mehr passiert danach nicht mehr.

Ich würde ja eine Datei als Beispiel hochladen aber 1) das sind echt große Datenmengen und 2) darf ich das gar nicht aus Datenschutzgründen meiner Firma

MfG
Chrisi


AW: Aktuelle Kalenderwoche aus Datensatz
20.06.2023 14:47:22
Pappawinni
Das Makro schreibt nicht in A1
Es tut nicht mehr, als jeweils das Datum ab Montag der Woche, die durch das letzte Datum in "alle Daten" gegeben ist bis eben zu diesem Datum ab A2 in Daten_pro_Woche einzutragen.
Ich hab halt keine Idee was es sonst tun soll. Meine Kristallkugel streikt auch.


Anzeige
AW: Aktuelle Kalenderwoche aus Datensatz
20.06.2023 15:06:45
Pappawinni
Beispieldatei heißt ja nicht, dass du dein reales Projekt hier veröffentlichten sollst.
Du machst einfach eine neue Datei, die eben die Aufgabenstellung veranschaulicht.
Das kann natürlich dazu führen, dass du die Lösung dann auf dein Projekt übertragen musst. Von daher kann es sinnvoll sein, nahe am Original zu bleiben, aber halt dort wo es unbedeutend ist, mit "sinnbefreiten" Daten.
Ein Helfer müsste sich ja auch irgendetwas zusammen basteln, um testen zu können, was er dann vorschlägt. Das aus einer Beschreibung heraus zu machen, gelingt leider oft nicht vollständig, oder auch gar nicht, wie in deinem Fall ..


Anzeige
AW: Aktuelle Kalenderwoche aus Datensatz
20.06.2023 15:27:10
Chrisi
Hallo,

hier eine genauere Beschreibung:

Worksheet "Zwischenablage": nur zum zwischenspeichern da
Worksheet "Alle_Daten": Alle Daten die aus importierten Dateien kommen sollen dort langfristig erhalten bleiben (File für File untereinander angeordnet)
Worksheet "Daten_pro_Woche": Alle Daten aus der aktuellen Woche sollen dort enthalten sein (Datum ist im Datensatz vorhanden; Spalte A im Sheet Zwischenablage)

Aufgabenstellung:

1) Makrobutton wird gedrückt

2) Fenster zum Dateien auswählen öffnet sich

3) Datei wird ausgewählt und alle darin enthaltenen Daten werden in den Worksheet "Zwischenablage" kopiert.

4) Es werden nun aber nur folgende Daten gebraucht: "Ausdr1", "benötigte Zeit (in Std)", "Lohnart", "TATätigkeit-TXT", "grGruppe-TXT" und "jj mm" welche in den Spalten "A, E, G, L, N, O" enthalten sind.

5)Diese Daten sollen anschließend in die erste freie Zeile des Worksheets "Alle_Daten" kopiert werden wobei darauf geachtet werden soll das keine Daten doppelt vorhanden sind

6)Von den Daten die ab Schritt 5 im Sheet "Alle_Daten" stehen sollen nun nur die Daten welche in der aktuellsten Woche sind in den Sheet "Daten_pro_Woche" kopiert werden. (Wenn Makro am Mittwoch gestartet wird soll der Datensatz von Montag bis Mittwoch kopiert und in "Daten_pro_Woche" eingefügt werden, wenn das Makro am Freitag gestartet wird dann die Datensätze von Montag bis Freitag und so weiter - immer von der aktuellsten Woche)


Anzeige
AW: Aktuelle Kalenderwoche aus Datensatz
20.06.2023 16:26:02
Pappawinni
Na, wenn du es schon bis Punkt 6 geschafft hast, dann brauchst du ja vom letzten Datum in "Alle_Daten"
dtCurrent = wksAll.Cells(Rows.Count, 1).End(xlUp).value
um ((Weekday(dtCurrent) + 5) Mod 7) Zeilen nach oben und das dann nach "Daten_pro_Woche" zu kopieren.
Also etwa:
l
ngLastrowToCopy = wksAll.Cells(Rows.Count, 1).End(xlUp).row
lngFirstrowToCopy = lngLastrowToCopy - ((Weekday(dtCurrent) + 5) Mod 7) 


AW: Cobra oder sonstige Hellseher gefragt.
20.06.2023 16:45:47
Pappawinni
Das bringt dich nicht weiter, weil ich mir hier irgend etwas zusammen reimen muss.
Welche Spalten sind genau wohin zu kopieren, keine Ahnung !
Steht in "Alle_Daten" für jeden Tag nur ein Eintrag, oder mehrere, wie gesagt, ich beschäftige mich nicht mit Hellseherei und deshalb bin ich hier jetzt einfach raus.


Anzeige
AW: Aktuelle Kalenderwoche aus Datensatz
21.06.2023 02:16:11
Piet
Hallo

keiner Kollege wird für dich eine Datei nach deinen Angeben aufbauen, das ist zu umständlich. Zum Thema Beispieldatei:
Es reicht uns zwei Mappen mit ca. 10 Zeilen mit Fantasiedaten zu erstellen. Als Name Frau Holle, Rotkäppchen, etc.
Zum Makro Entwickeln müssen wir den Tabellenaufbau erkennen, Tabellen Namen, Spaltenüberschriften, Zeilenaufbau.
Und dann eine Lösung von Hand vorgeben, was wohin kopiert werden soll.

Ohne eine kleine Beispieldatei wirst du keine Chance haben. Und Formendaten interessieren uns nicht!!

mfg Piet


AW: Aktuelle Kalenderwoche aus Datensatz
21.06.2023 08:13:08
Chrisi
Guten Morgen,

habe nun eine Beispiel-Datei erstellt, hoffe die hilft euch weiter:

https://www.herber.de/bbs/user/159651.xlsx


Anzeige
AW: Aktuelle Kalenderwoche aus Datensatz
22.06.2023 00:00:05
Pappawinni
Die Beispieldatei erklärt doch schon mal einiges...
Du hast in "Alle_Daten" nicht einfach nur ein Datum, sondern Datum mit Uhrzeit, das erklärt, warum dann auch bei mir Datum mit Uhrzeit heraus gekommen ist.

Dazu folgendes:
Setze einmal die Formatierung für ein Zelle in dieser "Datumsspalte" auf "Standard", dann siehst du, dass da nur eine Zahl steht..
z.B. 45036,1625694444
Der Ganzzahlanteil davon also 45036 ist die Zahl an Tagen seit 31.12.1899 ( 1.1.1900 ist Tag 1, Tage = 0 sind unbekannt )
(Du kannst ja mal versuchen das nachzurechnen. Wenn ich mich nicht irre, ist alle 4 Jahre Schaltjahr, fällt aber alle 100 Jahre aus, außer jeweils nach 400 Jahren oder so...damit wäre 1900 kein Schaltjahr gewesen, 2000 aber schon....123 Jahre, davon 31 Schaltjahre, Januar 31, Februar 28, März 31, April 20.. kommt ganz gut hin, denk ich)
Wie dem auch sei, der Datumswert ist also der ganzzahlige Anteil und repräsentiert im gezeigten Fall den 20.4.2023
Die Nachkommastellen stehen für die Uhrzeit also 24 * 0,1625694444 Stunden = 3,9016666656 Stunden, bzw. 3 Stunden 54 Minuten 6 Sekunden
Excel zeigt das im Übrigen oben in der Bearbeitungsleiste auch an, wenn du ne Zelle mit einem Datum selektierst, also da steht dann Datum mit Uhrzeit.

Das bedeutet, wenn man in dieser Spalte nach einem bestimmten Datum sucht, muss man die Nachkommastellen, also die Uhrzeit ignorieren.
Wenn man aber die Information hat, dass da "nur" ein Datum steht, erwartet man eben eine Ganzzahl und wird beim Vergleich mit einer Ganzzahl kläglich scheitern, also das gesuchte Datum nie finden.

Das ist nun nur einer der vielen möglichen Schwachpunkte einer verbalen Beschreibung...


Anzeige
AW: Aktuelle Kalenderwoche aus Datensatz
22.06.2023 10:18:53
Pappawinni
So, jetzt mal Code dazu, der weniger aufwändig ist, als die Erklärung zu Datum war.

Sub unit()

Dim wksWeek As Worksheet
Dim wksAll As Worksheet
Dim dtCurrent As Date, dtMonday As Date, dtRow As Date
Dim lngRowLastEntry As Long, lngRowMonday As Long
Dim lngFirstCol As Long, lngLastCol As Long
Dim i As Long

Set wksAll = ThisWorkbook.Worksheets("Alle_Daten")
Set wksWeek = ThisWorkbook.Worksheets("Daten_pro_Woche")
lngFirstCol = 1
lngLastCol = 6


lngRowLastEntry = wksAll.Cells(Rows.Count, lngFirstCol).End(xlUp).Row
'Letztes Datum in der ersten Spalte
dtCurrent = CDate(Int(wksAll.Cells(lngRowLastEntry, lngFirstCol).Value))
'Montag dieser Woche
dtMonday = DateAdd("d", -((Weekday(dtCurrent) + 5) Mod 7), dtCurrent)

' Zeile suchen, die vor dem Montag der Woche liegt
i = lngRowLastEntry
Do
   i = i - 1
   dtRow = wksAll.Cells(i, lngFirstCol).Value
Loop Until dtRow  dtMonday And i > 2

' erste zu kopierende Zeile
lngRowMonday = i + 1

' Wochendaten löschen
wksWeek.UsedRange.ClearContents
' Wochendaten neu kopieren
wksAll.Range(Cells(lngRowMonday, lngFirstCol).Address, Cells(lngRowLastEntry, lngLastCol).Address).Copy wksWeek.Range("A1")

End Sub



Anzeige
AW: Aktuelle Kalenderwoche aus Datensatz
22.06.2023 12:12:33
Chrisi
Hallo Pappawinni,

danke für den Code und danke für deine Zeit und Nerven.

Der Code funktioniert einwandfrei, genau so wie ich es wollte, VIELEN DANK!


AW: Aktuelle Kalenderwoche aus Datensatz
22.06.2023 14:22:19
Piet
Hallo

da war der Kollege schneller, und vor seinem Programm kann ich nur den Hut abziehen. Er ist um Klassen besser!

Weil meine Lösung zuj schade für die Mülltonne ist habe ich sie mit hochgeladen, und beide Codes verglichen.
Sein Code ist moderner, zu komplex das ich ihn NICHT verstehe! Mein Code ist eine alte Excel 95/97 Version!

Unterschiede:
Bei mir spielt es keine Rolle ob in All-Daten schon Daten stehen, oder die Tabelle leer ist. Sie wird immer gefüllt. (Ohne doppelte)
Fehlen beim Kollegen diese Daten kommt es zum Laufzeitfehler. Beim Kopieren wird in WeekDaten die Überschrift gelöscht!
Ich weiss nicht ob dem Kollegen das löschen aufgefallen ist??? Und ob bei ihm die neuesten All_Daten kopiert werden??
https://www.herber.de/bbs/user/159689.xls

mfg Piet


Anzeige
AW: Aktuelle Kalenderwoche aus Datensatz
22.06.2023 15:09:39
Pappawinni
Du, ich hab mich letztlich nur um das kopieren der Daten für die aktuelle Woche gekümmert.
Wie die in "alle Daten" kommen war mir egal. Das war aber, meine ich, in einem anderen Thread schon behandelt.
Die Position der Kopie zu ändern und den Titel noch zu kopieren, wäre auch kein Ding...
Ich hab wie gesagt nur das gemacht, wonach ursprünglich gefragt war.


AW: Aktuelle Kalenderwoche aus Datensatz
22.06.2023 15:14:13
Chrisi
Die Position und die Titelzeile habe ich selbst noch gemacht, das war das kleinste Problem welches ich hatte :)

Danke an euch beide 👍

63 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige