Anzeige
Archiv - Navigation
1520to1524
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
Höchstes, niedrigstes Datum mit Bedingungen
05.11.2016 13:58:08
olga
Hallo,
ich kämpfe darum aus einer Liste das höchste und niedrigste Datum gemäß Vorgabe zu ermitteln.
Bei Auswahl "Hans" und Monat "Februar" müsste das Ergebnis lauten:
vom 03.02.2017 bis 07.02.2017 = 3 Arbeitstage.
Jedoch wird bis zum 01.03.2017 gezählt.
Musterdatei
https://www.herber.de/bbs/user/109225.xlsm
Danke!
Gruß,Olga

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Höchstes, niedrigstes Datum mit Bedingungen
05.11.2016 15:48:49
Sepp
Hallo Olga,
eine Möglichkeit.
Private Sub CommandButton1_Click()
Dim objADO As Object
Dim strSQL As String, strCON As String, strPath As String, strTable As String, strSource As String
Dim lngMinDate As Long, lngMaxDate As Long, lngWorkdays As Long

strPath = ThisWorkbook.FullName

strTable = "Arbeitzeit"

strSource = Sheets(strTable).Range("A1").CurrentRegion.Address(0, 0)

If Mid(strPath, InStrRev(strPath, ".") + 1) = "xls" Then
  strCON = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Extended Properties=Excel 8.0;" & "Data Source=" & _
    strPath & ";"
ElseIf Mid(strPath, InStrRev(strPath, ".") + 1) Like "xls?" Then
  strCON = "Provider=Microsoft.ACE.OLEDB.12.0;" & "Extended Properties=""Excel 12.0;HDR=YES"";" & _
    "Data Source=" & strPath & ";"
End If

If cboMonat <> "" And cboMonteur <> "" Then
  Set objADO = CreateObject("ADODB.Recordset")
  
  strSQL = "select min(Datum) from [" & strTable & "$" & strSource & "] where Monteur = '" & cboMonteur _
    & "' and Monat = '" & cboMonat & "'"
  
  objADO.Open strSQL, strCON, 3, 1
  
  lngMinDate = objADO.Fields(0).Value
  
  objADO.Close
  
  strSQL = "select max(Datum) from [" & strTable & "$" & strSource & "] where Monteur = '" & cboMonteur _
    & "' and Monat = '" & cboMonat & "'"
  
  objADO.Open strSQL, strCON, 3, 1
  
  lngMaxDate = objADO.Fields(0).Value
  
  objADO.Close
  
  lngWorkdays = Application.NetworkDays(lngMinDate, lngMaxDate, Sheets("F").Range("A1:A18"))
  
  lblArbTage.Caption = "vom " & Format(lngMinDate, "dd.mm.yyyy") & " bis " & Format(lngMaxDate, _
    "dd.mm.yyyy") & " = " & lngWorkdays & " Arbeitstage"
End If

Set objADO = Nothing
End Sub

Gruß Sepp

Anzeige
AW: Höchstes, niedrigstes Datum mit Bedingungen
05.11.2016 17:02:48
olga
Hallo Sepp,
Danke, für Deine Antwort. Es funktioniert, aber geht das ganze nicht einfacher.
Bei dem Code steig ich garnicht durch.
Gruß, Olga
AW: Höchstes, niedrigstes Datum mit Bedingungen
05.11.2016 21:05:27
Peter
Hallo Olga,
versuche es mit dem nachfolgenden Code:
Private Sub CommandButton1_Click()
Dim lZeile     As Long
Dim lMinDate   As Long
Dim lMaxDate   As Long
Dim lWorkdays  As Long
Dim Tageges    As Long
lMaxDate = 1
lMinDate = 999999
With ThisWorkbook.Worksheets("Arbeitzeit")
For lZeile = 2 To .Cells(.Rows.Count, 6).End(xlUp).Row
If .Cells(lZeile, 2) = cboMonat And .Cells(lZeile, 6) = cboMonteur Then
If CLng(.Cells(lZeile, 3).Value)  lMaxDate Then _
lMaxDate = CLng(.Cells(lZeile, 3).Value)
End If
Next lZeile
End With
With Sheets("F")
.Cells(2, 9) = CDate(lMinDate)
.Cells(3, 9) = CDate(lMaxDate)
Tageges = .Cells(4, 9)
End With
UFAZ.lblArbTage.Caption = "vom " & Format(lMinDate, "dd.mm.yyyy") & " bis " & Format( _
lMaxDate, "dd.mm.yyyy") & " = " & Tageges & " Arbeitstage"
End Sub
Gruß Peter
Anzeige
AW: Höchstes, niedrigstes Datum mit Bedingungen
06.11.2016 04:06:37
olga
Hallo Peter,
das ist es was ich gesucht habe.
Vielen Dank!
Gruß, Olga

308 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige