Registriert seit: 25.02.2016
Version(en): 2010
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ß
Registriert seit: 06.12.2015
Version(en): 2016
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
Registriert seit: 25.02.2016
Version(en): 2010
Danke für's schreiben - vba habe ich gedacht weil das ganze Automatisch passieren soll
Registriert seit: 12.10.2014
Version(en): 365 Insider (32 Bit)
25.02.2016, 14:46
(Dieser Beitrag wurde zuletzt bearbeitet: 25.02.2016, 14:46 von RPP63.)
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
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag.
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Registriert seit: 13.04.2014
Version(en): 365
25.02.2016, 15:01
(Dieser Beitrag wurde zuletzt bearbeitet: 25.02.2016, 15:01 von BoskoBiati.)
Hallo,
geht auch mit Formeln:
Formel in B2 nach unten ziehen:
Arbeitsblatt mit dem Namen 'Tabelle1' |
| A | B |
1 | 01.02.2016 | 01.02.2016 |
2 | 20.02.2016 | 02.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 |
Zelle | Formel |
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 |
Gruß
Edgar
Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Registriert seit: 12.10.2014
Version(en): 365 Insider (32 Bit)
25.02.2016, 15:14
(Dieser Beitrag wurde zuletzt bearbeitet: 25.02.2016, 15:14 von RPP63.)
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
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag.
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Registriert seit: 25.02.2016
Version(en): 2010
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ß
Registriert seit: 12.10.2014
Version(en): 365 Insider (32 Bit)
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=52Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag.
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Registriert seit: 13.04.2014
Version(en): 365
Hallo,
stelle doch einfach eine Zeilenhöhe von 30 ein, dann hast Du die Abstände!
Gruß
Edgar
Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Registriert seit: 29.09.2015
Version(en): 2030,5
Oder:
Code:
Sub M_snb()
Cells(1, 2).Resize([networkdays(A1,A2)]) = [index(workday(A1,row(offset(A1,,,networkdays(A1,A2)))-1),)]
End Sub