Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1896to1900
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

Verweis für Ferienkalender

Verweis für Ferienkalender
29.08.2022 14:10:53
Markus
Hi zusammen,
ich möchte einen Ferienkalender erstellen, der anhand des jeweiligen von- und bis-Datums in einer Stammdatenliste den Feriennamen zieht und in jeden einzelnen Tag der in den Kalender überträgt. Und zwar auch in Abhängigkeit vom jeweiligen Bundesland.
Etwas knifflig ist dabei, dass es, meistens bei den Pfingstferien, einzelne zusätzliche Tage gibt. Bsp. 13.05. - 18.05. + 26.05.
Mit der Beispieldatei wir es hoffentlich klarer.
https://www.herber.de/bbs/user/154862.xlsx
Danke euch vorab!
VG Markus

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Nachfrage...
29.08.2022 14:51:16
{Boris}
Hi,
wäre auch eine Ergebnisausgabe in dieser Form möglich?

Datum	      Bayern	       Thüringen	      NRW            ...usw
01.01.2022
02.01.2022
03.01.2022
...usw. 

Unter den Bundesländern steht dann zu jedem Datum, ob und welche Ferien gerade sind.
VG, Boris
AW: Nachfrage...
29.08.2022 14:54:36
Markus
Hey Boris,
klar, würde auch gehen. Kann mir dann die Werte per Index-Formel ziehen.
Wie gehe ich da vor?
Vielen Dank schon mal!
VG Markus
Beispieldatei...
29.08.2022 14:57:58
{Boris}
Hi,
...anbei. Formel aus I3 ist sowohl nach unten als auch nach rechts kopierbar.
https://www.herber.de/bbs/user/154864.xlsx
Den Eingabebereich für die "Stammdaten" hab ich erstmal bis Zeile 100 vorgesehen.
Schau mal, ob das so passt.
VG, Boris
Anzeige
AW: Beispieldatei...
29.08.2022 15:53:28
Markus
Oh man, die hat es mal in sich. Tut aber was sie soll..
LET und SEQUENZ sind mir völlig neu. Muss ich mir bei Gelegenheit genauer anschauen.
Vielen Dank dir für die schnelle Hilfe und evtl bis demnächst =)
VG Markus
Du kannst aber auch mal...
29.08.2022 16:06:20
{Boris}
Hi,
...den Vorschlag von Daniel umsetzen. Ist - wie er ja schreibt - etwas mehr Vorarbeit, dafür ist die Formel einfacher.
Andererseits ist meine gepostete Formel gar nicht soooo wahnsinnig schwer verständlich:
=LET(
x;($A$3:$A$100=I$2)*($C$3:$C$100=$H3)+($A$3:$A$100=I$2)*($E$3:$E$100=$H3);
WENN(SUMME(x);INDEX($B$3:$B$100;MIN(WENN(x;SEQUENZ(98))));""))
LET ist ja erstmal hauptsächlich dafür da, um Redundanzen zu vermeiden.
Der fett gedruckte Teil (reine Matrixberechnungen - hier Multiplikation / Addition von Wahrheitswerten - wie man sie schon immer macht) wird dabei zu Beginn der Variablen x zugewiesen, auf die in der eigentlichen Formel (WENN(SUMME(...)) 2 mal zurückgegriffen wird.
Ohne LET würde die Formel halt länger (und noch unübersichtlicher),
SEQUENZ ist eine sehr simple Funktion zur Erzeugung von Zahlenreihen-/folgen. Vormals hat man das mit ZEILE($1:$98) formuliert (geht natürlich auch so in xl365).
VG, Boris
Anzeige
AW: Verweis für Ferienkalender
29.08.2022 15:25:44
Daniel
Hi
Andere Lösungsmöglichkeit, die etwas mehr Vorbereitung erfordert, dafür eine einfache Formel ermöglicht:
Die Stammdatentabelle musst du so für jedes Bundesland aufbauen:
In der ersten Spalte immer abwechselnd das Datum des ersten Arbeitstagesund das Datum des ersten Ferientags.
In der zweiten Spalte schreibt du daneben beim ersten Arbeitstag nichts und beim ersten Ferientag den Feriennamen.
Sind die Ferien in zwei Blöcke geteilt, dann wiederholt du einfach den Feriennamen, auch einzeltage kannst du so eingeben.
Wichtig ist nur, dass die Liste nach Datum aufsteigend sortiert ist.
Dh die Liste muss in etwa so aussehen:

01.01.22 |
10.04.22 | Osterferien
17.04.22 |
05.05.22 | Pfingstferien
12.05.22 |
23.05.22 | Pfingstferien
24.05.22 |
So eine Liste erstellst du für jedes Bundesland.
Dann markiert du jede Liste und vergibst ihr einen Excel-Namen, am besten nimmt du den Namen des jeweigen Bundeslandes, den du auch in deiner Übersicht in Spalte G verwendest:
Die Formel in deiner Übersicht sieht dann so aus, in deiner Beispieldatei in Zelle I3:

=SVerweis(H3;Indirekt(G3);2;Wahr)&""
Gruß Daniel
Anzeige
AW: Verweis für Ferienkalender
29.08.2022 16:42:08
Daniel
Noch ne Variante, die uneingeschränkt für deine Vorliegenden Daten funktioniert und dabei einfach ist:
Die Reihenfolge in der Liste ist egal.

=FILTER($B$3:$B$7;($A$3:$A$7=G3)*(($C$3:$C$7=H3)+($E$3:$E$7=H3));"")
In der Bedingungsprüfung steht + für ODER und * für UND
0 ist in Berechnungen äquivalent FALSCH und 1 bzw jede andere Zahl äquivalent WAHR
Gruß Daniel
Viel besser...
29.08.2022 18:09:24
{Boris}
Hi Daniel,
...weil viel einfacher :-)
@Markus: Nimm die Filtervariante von Daniel.
VG, Boris
Angepasst...
29.08.2022 18:12:04
{Boris}
Hi Markus,
..auf meine Beispieldatei in I3:
=FILTER($B$3:$B$100;($A$3:$A$100=I$2)*(($C$3:$C$100=$H3)+($E$3:$E$100=$H3));"")
und sowohl runter als auch nach rechts kopieren.
VG, Boris
Anzeige
AW: Viel besser...
30.08.2022 10:48:44
Markus
Hey ihr beiden,
ich habe jetzt deine Variante tatsächlich bereits umgesetzt, Boris. Musste leider schnell gehen. Aber trotzdem dir natürlich auch vielen Dank, Daniel! Hab mir deine Vorschläge notiert.
Mit den üblichen Standards komme ich grundsätzlich gut klar. Bei logischen Verknüpfen von Bereichen fehlt mir allerdings noch die Übung. Hatte dazu lediglich mal mit dem Summenprodukt rumprobiert. Werd ich aber auf jeden Fall vertiefen..
Also vielen Dank nochmal euch beiden!
VG Markus
VBA?
29.08.2022 17:35:05
Yal
Moin,
Vielleicht ist in dem Fall VBA nicht so sehr abwägig...

Sub Datum_transformieren()
Dim Z As Range 'Z wie Zelle
Dim R As Long ' R wie Row
Dim i
With Worksheets("Tabelle1")
For Each Z In Range(.Range("A3"), .Cells(Rows.Count, "A").End(xlUp))
Set Z = Z.EntireRow
'Von-Bis
For i = Z.Range("C1").Value To Z.Range("D1").Value 'relative Adresse: "1" ist immer die Zeile von Z
R = .Cells(Rows.Count, "G").End(xlUp).Row + 1
.Cells(R, "G") = Z.Range("A1").Value
.Cells(R, "H") = CDate(i)
.Cells(R, "I") = Z.Range("B1").Value
Next
'EinzelDatum, Falls vorhanden
If Z.Range("E1")  "" Then
R = .Cells(Rows.Count, "G").End(xlUp).Row + 1
.Cells(R, "G") = Z.Range("A1").Value
.Cells(R, "H") = Z.Range("E1").Value
.Cells(R, "I") = Z.Range("B1").Value
End If
Next
End With
End Sub
Mein Tipp, um VBA-Versteher zu werden: den Code auf Deutsch laut lesen. Hört sich bescheuert an, aber beschleunigt das Verstehen ungemein :-)
VG
Yal
Anzeige
AW: VBA?
30.08.2022 10:55:26
Markus
Hi Yal,
ich hab Boris Lösung jetzt tatsächlich schon umgesetzt, da es schnell gehen musste. Trotzdem auch dir danke für deinen Vorschlag!
Bzgl VBA bin ich aber ohnehin noch relativ schwach auf der Brust. Wollte da aber eh auch endlich mal einsteigen. Also danke auch für den Tipp mit dem laut Vorlesen! =)
VG Markus

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige