Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
836to840
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
836to840
836to840
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

der nächste Urlaub

der nächste Urlaub
11.01.2007 20:13:51
MarionP
Hallo,
ich habe folgendes Problem, aber keine Ahnung wie ich es lösen kann.
https://www.herber.de/bbs/user/39589.xls
Es soll aus einer Matrix der nächste Urlaub eines Mitarbeiters augegeben werden.
Außerdem soll der nächste Urlaub, aller Mitarbeiter, ab dem aktuellen Datum oder auch ab einem vorgegebenen Datum ausgegeben werden.
ich hoffe auf Eure Hilfe.
mfg
MarionP

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: der nächste Urlaub
11.01.2007 22:13:30
Christoph
Hallo Marion,
das geht bestimmt auch per Formel oder Pivot aber bei dieser Struktur von Tabelle2 bezweifel ich das. Hier ein VBA-Ansatz. Der Code ist nicht besonders elegant, sollte aber bis zu 1000 Datensätze ausreichend sein.
Gruß
Christoph
Option Explicit
Sub GetVacation()
'Eintrag des Urlaubs zu gegebenem Namen in Zeile 10:
Dim wks As Worksheet
Dim i&, j%, blnFnd As Boolean
Set wks = Sheets("Tabelle1")
With Sheets("Tabelle2")
For i = 2 To .Cells(.Rows.Count, 1).End(xlUp).Row
If .Cells(i, 1) = wks.Range("A10") Then
For j = 2 To .Cells(i, Columns.Count).End(xlToLeft).Column Step 4
If .Cells(i, j) >= Now Then
blnFnd = True
Exit For
End If
Next
Exit For
End If
Next
wks.Range("B10:C10").ClearContents
If blnFnd Then
wks.Range("B10") = .Cells(i, j)
wks.Range("C10") = .Cells(i, j + 2)
Else
wks.Range("B10") = "kein Eintrag"
End If
End With
End Sub
Sub GetNames()
'Liste der Namen zu gegebenem Datum ab Zeile 26:
Dim wks As Worksheet
Dim i&, j%, k&
Dim datStart As Date
Dim blnFnd As Boolean
Application.ScreenUpdating = False
Set wks = Sheets("Tabelle1")
k = 25
wks.Rows(k + 1 & ":" & wks.Rows.Count).Delete
If Not IsDate(wks.Cells(k, 1)) Then
datStart = Now
Else
datStart = wks.Cells(k, 1)
End If
With Sheets("Tabelle2")
For i = 2 To .Cells(.Rows.Count, 1).End(xlUp).Row
For j = 2 To .Cells(i, Columns.Count).End(xlToLeft).Column Step 4
If .Cells(i, j) >= datStart Then
blnFnd = True
k = k + 1
wks.Cells(k, 1) = .Cells(i, 1)
wks.Cells(k, 2) = .Cells(i, j)
wks.Cells(k, 3) = .Cells(i, j + 2)
Exit For
End If
Next
Next
If Not blnFnd Then wks.Cells(k + 1, 1) = "kein Eintrag"
End With
Application.ScreenUpdating = True
End Sub

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige