Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Zellen anhand Excel Datenbank erstellen
#1
Hallo liebe Leute

Ich stehe vor einer etwas komplexeren Aufgabe und habe keine Ahnung wie ich das lösen soll. Vielleicht könnt ihr mir helfen.

Ich muss Liste erstellen, die einen Zeileneintrag (Datumsangabe) pro Arbeitstag, Pro Person enthält (Der ganze Rest der Liste ist Nebensache, die kann ich selber lösen).

Ich habe folgende Informationen

Name Person
Pensum Person (Arbeitstage pro Woche)
Zeitraum = 06.01.2020 - 31.12.2020
Arbeitstage pro Woche = eine Arbeitswoche enthält 5 Arbeitstage

Nun will ich daraus mit einer Funktion / Formel oder sehr wahrscheinlich einem Makro diese Liste automatisch generieren, habe aber keine Ahnung wie. Es spielt dabei keine Rolle an welchen Arbeitstage die Person anwesend ist. Deshalb gehe ich von der Annahme aus, dass jeder immer am Montag startet und an einem Stück sein Pensum absolviert (z.B 5 Arbeitstage = Mo - FR, 3 Arbeitstage = Mo - Mi, 1 Arbeitstag = Mo). Die Liste sollte aber auch gleich die Daten enthalten.

Ausgangslage
Name / Arbeitstage pro Woche

Zielliste:
Datum / Name

Ich habe ein Beispiel angehängt.

Ich hoffe jemand kennt sich mit sowas aus

Vielen Dank bereits im Voraus!

LG


Angehängte Dateien
.xlsx   Beispiel Aufgabe.xlsx (Größe: 258,89 KB / Downloads: 9)
Antwortento top
#2
Hallo,

in Deinem Profil steht Excel 2010 drin. Eine Formellösung für Excel 2010 kann ich aktuell leider nicht anbieten.

Mit einer neueren Excel Version - besser gesagt ab Excel 2016 und vielleicht interessant für andere hier - lässt sich das
mit einer Matrixformel lösen. Die Formel setzt voraus, dass in Deiner Beispieldatei in der neu hinzugefügten Spalte A
ein Index (einfach 1, 2, 3 ...) enthalten ist. Dann ergibt sich als Matrixformel (Eingabe mit Strg+Umschalt+Enter):


Code:
Für die Namen I2={INDEX($B$3:$B$9;--TEIL(TEXTKETTE(WIEDERHOLEN(TEXT($A$3:$A$9;"00");$C$3:$C$9));2*(ZEILE()-ZEILE($I$1))-1;2);1)}
Für die Daten H2= WENN(I2<>I1;DATUM(2020;1;6);H1+1)


Für's Datum der Einfachheit halber DATUM() verwendet, lässt sich aber z.B. in eine Zelle auslagern. Und ginge bis
zu 99 Personen.

Gruß


Angehängte Dateien
.xlsx   Beispiel Aufgabe - 2016.xlsx (Größe: 259,04 KB / Downloads: 5)
Microsoft Excel Expert · Microsoft Most Valuable Professional (MVP) from 01/2011 - 06/2019
https://de.excel-translator.de :: Online Excel-Formel-Übersetzer :: Alle Übersetzungen der Excel Funktionen & Fehlerwerte
Antwortento top
#3
Hallo!

Erstmal sorry, 2016 ist genau was ich brauche.

Schon mal vielen Dank für deine Hilfe!

Ich habe deine Formeln mal im File "Beispiel Aufgabe neu" genutzt.

Leider funktioniert das bei mir nicht so richtig. Ich habe in einem Register (Master) ca. 30 Personen mit unterschiedlichen Pensen (Arbeitstagen pro Woche). Daraus soll ich in einem neuen Register die Liste erstellen.
Wenn ich deine Formeln nutze, macht es mir nur zwei Einträge und der Rest weisst einen Fehler aus. Aber auch die ersten zwei können nicht stimmen. Theoretisch müsste es ja schon für die erste Person für das ganze 1 Jahr jeweils 5 Tage pro Woche erstellen. Das wären dann bei 52 Kalenderwochen bereits 260 Zeilen. Dieses Prozedere müsste es dann für jede einzelne Person aus Register "Master" ausführen, so dass im Register "Plan" schlussendlich für jede Person für das ganze Jahr jeweils einen Zeileneintrag pro Arbeitstag im Jahr 2020 existiert.

Ich bin nicht sicher ob du mich falsch verstanden hast, oder ob ich jetzt etwas in der Formel falsch gemacht habe.

Danke für die Hilfe!

Lg


Angehängte Dateien
.xlsx   Beispiel Aufgabe neu.xlsx (Größe: 261,3 KB / Downloads: 8)
Antwortento top
#4
Moin

Ich habe da mal was (mit PQ) gebastelt.


Angehängte Dateien
.xlsx   clever-escel-forum_23091.xlsx (Größe: 353,86 KB / Downloads: 8)
Wir sehen uns!
... shift-del
Hinweise zu meiner Hilfe in Foren
Excel Super-Funktionen: VERWEIS(), INDEX(), WAHL()
Antwortento top
#5
Hallo,

generell: Du musst die Formel als Matrixformel eingeben: Formel eingeben und statt Enter dann Strg+Umschalt+Enter drücken.
Danach werden die geschweiften Klammern von Excel automatisch gesetzt. In Deiner Datei steht dann in der Tabelle Plan in B2:


Code:
{=INDEX(Master!$B$2:$B$30;--TEIL(TEXTKETTE(WIEDERHOLEN(TEXT(Master!$A$2:$A$30;"00");Master!$C$2:$C$30));2*(ZEILE()-ZEILE($B$1))-1;2);1)}

Dass allerdings jetzt das ganze Jahr aufgefüllt werden sollte, habe ich übersehen. Ich würde dann eher die Lösung von shift-del
mit Power Query empfehlen und bevorzugen.

Gruß
Microsoft Excel Expert · Microsoft Most Valuable Professional (MVP) from 01/2011 - 06/2019
https://de.excel-translator.de :: Online Excel-Formel-Übersetzer :: Alle Übersetzungen der Excel Funktionen & Fehlerwerte
Antwortento top
#6
PHP-Code:
Sub M_snb()
    
sn Sheet1.Cells(1).CurrentRegion
    y 
CLng(DateSerial(202014) - Weekday(DateSerial(202014),2))
    
    
With CreateObject("scripting.dictionary")
        For 
1 To 52
           
For jj 1 To 5
               
For jjj 2 To UBound(sn)
                  If 
sn(jjj3) >= jj Then .Item(.Count) = Array(jjsn(jjj2))
               
Next
           Next
        Next
        
        Sheet2
.Cells(14).Resize(.Count2) = Application.Index(.items00)
    
End With
End Sub 
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antwortento top
#7
Hallo maninweb,

hast Du als MVP eine Erklärung dafür, warum MS - neben TEXTVERKETTEN() - zusätzlich das nirgends fremdunterstützte TEXTKETTE() bereitstellt?

Ich habe - für die Crossportabilität - bislang ausschließlich excel:TEXTVERKETTEN (docs:TEXTJOIN, LO:VERBINDEN, ...) verwendet.
Antwortento top
#8
Hallo LCohen,

ob folgendes der Grund ist, kann ich leider nicht mit 100-prozentiger Sicherheit sagen, jedoch ist mit der Einführung von
TEXTKETTE die Funktion VERKETTEN in den Kompatibilitätsmodus gewandert. TEXTKETTE ist somit anscheinend als
vollständiger Ersatz von VERKETTEN gedacht, während TEXTVERKETTEN dann neu ist.

Gruß
Microsoft Excel Expert · Microsoft Most Valuable Professional (MVP) from 01/2011 - 06/2019
https://de.excel-translator.de :: Online Excel-Formel-Übersetzer :: Alle Übersetzungen der Excel Funktionen & Fehlerwerte
Antwortento top
#9
Zitat:Hi Shift-Del

Danke für deinen Lösungsvorschlag, genau sowas suche ich. Leider habe ich keine Erfahrung mit PQ... Wäre es möglich, dass du mir eine Kurzanleitung dazu geben könntest, wie du vorgegangen bist damit ich das nachvollziehen kann oder ist das zu komplex?

Das wäre sehr hilfreich.

Besten Dank!
Die Umsetzung ist etwas komplexer als dass man diese hier im Detail erklären könnte.

Grundsätzlich:
Man erstellt eine Kalendertabelle mit Kalenderwoche und Startdatum der KW.

Die Datensätze in der Datentabelle werden dupliziert anhand der Arbeitstage pro Woche.
Dann macht man einen Crossjoin, d.h. alle Datensätze der Datentabelle werden mit allen Datensätzen der Kalendertabelle zusammengeführt.
Das Enddatum ergibt sich aus Wochenbeginn + Dauer - 1 Tag.
Wir sehen uns!
... shift-del
Hinweise zu meiner Hilfe in Foren
Excel Super-Funktionen: VERWEIS(), INDEX(), WAHL()
Antwortento top


Gehe zu:


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