Clever-Excel-Forum

Normale Version: Excel VBA Daten schleife
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hi,

ich stehe grade vor ein Problem ich würde gerbe in Excel folgendes lösen...

Zelle A1 steht das start Datum und in Zelle A2 das Enddatum - nun möchte ich per VBA in Spalte B alle Datumstage stehen haben außer Samstag und Sonntag.

Wie gehe ich am besten vor?

Gruß
Hallo,

Warum vba? Wenn das Startdatum in eine Zelle eingetragen wird, darum mit Formel das Datum darüber +1 umd nach unten ziehen, entstehen alls Datumswerte. Dann mit =Wochentag und filtern nach 6,7 die Wochenenden markieren und löschen.

Mfg
Danke für's schreiben - vba habe ich gedacht weil das ganze Automatisch passieren soll
Hallo!
Eine Möglichkeit:

Sub MachMal()
Dim Endzeile As Long
Endzeile = WorksheetFunction.NetworkDays(Cells(1, 1), Cells(2, 1))
With Columns("B")
   .ClearContents
   .NumberFormat = "ddd * dd/mm/yyyy"
End With
With Range("B1:B" & Endzeile)
   .Formula = "=WORKDAY(A$1,ROW(A1)-1)"
   .Value = .Value
End With
Columns("B").AutoFit
End Sub

Gruß Ralf
Hallo,

geht auch mit Formeln:

Formel in B2 nach unten ziehen:


Arbeitsblatt mit dem Namen 'Tabelle1'
 AB
101.02.201601.02.2016
220.02.201602.02.2016
3 03.02.2016
4 04.02.2016
5 05.02.2016
6 08.02.2016
7 09.02.2016
8 10.02.2016
9 11.02.2016
10 12.02.2016
11 15.02.2016
12 16.02.2016
13 17.02.2016
14 18.02.2016
15 19.02.2016

ZelleFormel
B1=WENN($A$1="";"";A1)
B2=WENN(($A$1="")+(B1="");"";WENN(ARBEITSTAG(B1;1)>$A$2;"";ARBEITSTAG(B1;1)))
Diese Tabelle wurde mit Tab2Html (v2.4.1) erstellt. ©Gerd alias Bamberg
Hi!
Ich machs ja auch mit Formeln, Edgar!  ;-)
Mal die Variante, falls das Startdatum "aus Versehen" an einem Wochende ist:


Sub MachMal()
Dim Endzeile As Long, Korrektur As Byte
If WorksheetFunction.Weekday(Cells(1, 1), 2) > 5 Then Korrektur = 1
Endzeile = WorksheetFunction.NetworkDays(Cells(1, 1), Cells(2, 1))
With Columns("B")
  .ClearContents
  .NumberFormat = "ddd * dd/mm/yyyy"
End With
With Range("B1:B" & Endzeile)
  .Formula = "=WORKDAY(A$1,ROW(A1)-1+" & Korrektur & ")"
  .Value = .Value
End With
Columns("B").AutoFit
End Sub

Gruß Ralf
Super die Formel ist echt klasse RPP63,

normal würde ich es auch mit Formel machen jedoch wurde ich gefragt nur ich bin kein VBA Held...
ist es auch möglich nach jeder Ausgabe vom Datum 4 Zeilen nach unten zu rutschen um das nächste Datum auszugeben? schaut besser aus


Gruß
Hi!
Zitat:schaut besser aus
Die einen sagen so, die anderen behaupten glatt, dass in eine Tabelle keinesfalls Leerzeilen gehören!
http://www.online-excel.de/excel/singsel.php?f=52

Gruß Ralf
Hallo,

stelle doch einfach eine Zeilenhöhe von 30 ein, dann hast Du die Abstände!
Oder:


Code:
Sub M_snb()
    Cells(1, 2).Resize([networkdays(A1,A2)]) = [index(workday(A1,row(offset(A1,,,networkdays(A1,A2)))-1),)]
End Sub
Seiten: 1 2