Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Alle Donnerstage mit Datum in Tabelle

Forumthread: Alle Donnerstage mit Datum in Tabelle

Alle Donnerstage mit Datum in Tabelle
13.03.2020 11:14:15
Gerhard
Hallo zusammen,
Bitte um VBA Hilfe
Aus einer Jahreszahl sollten jeweils alle Donnerstage mit Datum aus diesem Jahr in eine Tabelle eingetragen werden!
siehe Testmappe
Vielen Dank für Eure Hilfe
Gruß Gerhard
https://www.herber.de/bbs/user/135835.xlsm
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Alle Donnerstage mit Datum in Tabelle
13.03.2020 12:13:12
hary
Moin
Muss es VBA sein?



Alle_Do_Tage
 ABCDEF
12020JanuarBemerkungFebruarBemerkungMärz
2      
3 Do 02.01.2020 Do 06.02.2020 Do 05.03.2020
4 Do 09.01.2020 Do 13.02.2020 Do 12.03.2020
5 Do 16.01.2020 Do 20.02.2020 Do 19.03.2020
6 Do 23.01.2020 Do 27.02.2020 Do 26.03.2020
7 Do 30.01.2020    
8      

verwendete Formeln
Zelle Formel Bereich R1C1 für Add In
B3,D3,F3=DATWERT("1."&B1 &$A$1)+5-REST(DATWERT("1."&B1 &$A$1);7)  =DATEVALUE("1."&R[-2]C &R1C1)+5-MOD(DATEVALUE("1."&R[-2]C &R1C1),7)
B4:B7,D4: D7,F4:F7=WENN(MONAT(B3)=MONAT(B3+7);B3+7;"")  =IF(MONTH(R[-1]C)=MONTH(R[-1]C+7),R[-1]C+7,"")

http://excel-inn.de/dateien/vba_beispiele/tabellenanzeige_in_html_addin.zip
http://hajo-excel.de/tools.htm
XHTML-Tabelle zur Darstellung in Foren, einschl. der neuen Funktionen ab Version 2007
Add-In-Version 14.02 einschl 64 Bit

russ hary
Anzeige
VBA
13.03.2020 12:20:31
UweD
Hallo
dann so
Modul1
Option Explicit 
 
Sub Donnerstage() 
    Dim Sp As Integer, MA As Date, TTag As Date, Z1 As Integer, Zeile As Integer 
    Dim WT As Integer, Jahr As Integer 
     
    WT = 4 'Donnerstag 
    Jahr = Cells(1, 1) 
    Z1 = 3 'erste Zeile 
     
    'Reset 
    Rows(Z1).Resize(5).Clear 
     
    For Sp = 2 To 24 Step 2 
        Zeile = Z1 'Zeile, in die geschrieben wird 
         
        MA = DateSerial(Jahr, Sp / 2, 1) 'Monatsanfang 
         
        If Weekday(MA, vbMonday) <= WT Then 
            TTag = WT - Weekday(MA, vbMonday) + MA 
        Else 
            TTag = 7 - Weekday(MA, vbMonday) + WT + MA 
        End If 
         
        Do Until TTag > DateSerial(Jahr, Month(MA) + 1, 0) 
             
            With Cells(Zeile, Sp) 
                .Value = TTag 
                .NumberFormat = "DDD DD.MM" 
            End With 
             
            TTag = TTag + 7 
            Zeile = Zeile + 1 
         
        Loop 
    Next 
End Sub 

LG UweD
Anzeige
AW: VBA
13.03.2020 13:14:59
Gerhard
Hallo UweD
Vielen Dank für Deine schnelle Hilfe
Funktioniert...
Gruß Gerhard
Danke für die Rückmeldung. (owT)
13.03.2020 13:50:18
UweD
AW: VBA
13.03.2020 16:36:41
Günther
Wie schön, dass du dich auch bei hary bedankt hast, der sich schließlich SEINEN Kopf für DEIN Problem zerbrochen hat, um DIR eine Alternative zu liefern. :-((
Merke: Auftragsarbeiten mit definitiven Wünschen wirst du sehr schön beim Betreiber des Forums (Hans) einreichen können.
Gruß
Günther
Anzeige
AW: VBA
13.03.2020 19:15:53
Gerhard
OH Sorry,
Hary auch Dir Vielen Dank für Deinen Lösungsvorschlag der ebenfalls funktioniert..
LG Gerhard
;
Anzeige
Anzeige

Infobox / Tutorial

Alle Donnerstage eines Jahres in Excel auflisten


Schritt-für-Schritt-Anleitung

Um alle Donnerstage eines bestimmten Jahres in Excel aufzulisten, kannst Du das folgende VBA-Skript verwenden. Stelle sicher, dass Du die Makros in Excel aktiviert hast.

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu starten.
  2. Wähle Einfügen > Modul, um ein neues Modul zu erstellen.
  3. Kopiere den folgenden VBA-Code in das Modul:
Option Explicit 

Sub Donnerstage() 
    Dim Sp As Integer, MA As Date, TTag As Date, Z1 As Integer, Zeile As Integer 
    Dim WT As Integer, Jahr As Integer 

    WT = 4 ' Donnerstag 
    Jahr = Cells(1, 1) 
    Z1 = 3 ' erste Zeile 

    ' Reset 
    Rows(Z1).Resize(5).Clear 

    For Sp = 2 To 24 Step 2 
        Zeile = Z1 ' Zeile, in die geschrieben wird 

        MA = DateSerial(Jahr, Sp / 2, 1) ' Monatsanfang 

        If Weekday(MA, vbMonday) <= WT Then 
            TTag = WT - Weekday(MA, vbMonday) + MA 
        Else 
            TTag = 7 - Weekday(MA, vbMonday) + WT + MA 
        End If 

        Do Until TTag > DateSerial(Jahr, Month(MA) + 1, 0) 
            With Cells(Zeile, Sp) 
                .Value = TTag 
                .NumberFormat = "DDD DD.MM" 
            End With 
            TTag = TTag + 7 
            Zeile = Zeile + 1 
        Loop 
    Next 
End Sub
  1. Schließe den VBA-Editor.
  2. Gib in Zelle A1 das Jahr ein, dessen Donnerstage Du auflisten möchtest.
  3. Führe das Makro Donnerstage aus, um die Daten in die Tabelle einzutragen.

Häufige Fehler und Lösungen

Fehler: Makro läuft nicht.
Lösung: Überprüfe, ob die Makros in den Excel-Optionen aktiviert sind. Gehe zu Datei > Optionen > Trust Center > Einstellungen für das Trust Center > Makroeinstellungen.

Fehler: Falsches Jahr wird angezeigt.
Lösung: Stelle sicher, dass Du das Jahr korrekt in Zelle A1 eingegeben hast.


Alternative Methoden

Falls Du keine VBA-Lösungen verwenden möchtest, kannst Du auch die folgende Formel nutzen, um alle Donnerstage in einer Spalte zu erzeugen:

  1. Gib in Zelle B1 das Datum des ersten Donnerstags des gewünschten Jahres ein.
  2. Verwende die folgende Formel in Zelle B2:
=B1 + 7
  1. Ziehe die Formel nach unten, um die Donnerstage des Jahres aufzulisten.

Praktische Beispiele

Angenommen, Du möchtest alle Donnerstage im Jahr 2023 auflisten. Gib einfach 2023 in Zelle A1 ein und führe das Makro Donnerstage aus. In der Tabelle erscheinen dann alle Donnerstagsdaten des Jahres.


Tipps für Profis

  • Verwendet die WENN-Funktion in Kombination mit WOCHENTAG, um weitere Wochentage wie Freitage oder Samstage zu berechnen. Dies könnte hilfreich sein, wenn Du die Methode für Excel alle Freitage des Jahres anpassen möchtest.
  • Nutze benannte Bereiche für die Zelle mit dem Jahr, um den Code flexibler zu gestalten.

FAQ: Häufige Fragen

1. Kann ich die Liste der Donnerstage für ein anderes Jahr erstellen?
Ja, ändere einfach das Jahr in Zelle A1 und führe das Makro erneut aus.

2. Welche Excel-Version benötige ich für das VBA-Skript?
Das Skript funktioniert in Excel 2007 und späteren Versionen. Stelle sicher, dass Du die Makros aktiviert hast.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige