Microsoft Excel

Herbers Excel/VBA-Archiv

Min Funktion gibt falschen Wert aus


Betrifft: Min Funktion gibt falschen Wert aus von: toExcel
Geschrieben am: 30.04.2017 23:46:41

Hallo zusammen,

die Min Funktion soll nach dem "niedrigsten" Datum suchen, gibt als Ergebnis aber immer 0 aus.

Folgendes Szenario: in Spalte A stehen diverse Fälligkeiten. Die Werte der Zellen, in denen mehrere Daten stehen mussten zunächst auf die angrenzenden Spalten aufgeteilt werden, so dass die Tabelle jetzt so aussieht:

  • A B C D E mtl. zum 01. mtl. zum 01. mtl. zum 18. 15.05.17;15.08.17;15.11.17 15.05.17 15.08.17 15.11.17 mtl. zum 01. 10.12.16;01.03.17;01.06.17;01.09.17 10.12.16 01.03.17 01.06.17 01.09.17 01.03.17;01.06.17;01.09.17 01.03.17 01.06.17 01.03.17 mtl. zum 01.
  • In Spalte B soll jetzt eine Schleife laufen, welche alle Daten die kleiner als das Buchungsdatum sind löscht und die Zelle nach links verschiebt, so dass das nächste Datum aus dieser Zeile in Spalte B steht. Das ganze soll solange passieren, bis es kein Datum mehr in Spalte B gibt welches kleiner als das Buchungsdatum ist. (Das Buchungsdatum wird vorher durch eine Nutzereingabe definiert)

    Mein Ansatz ist:

    Do
    For Zeile = 2 To letzteZeile
    If .Range("B" & Zeile).Value < Buchungsdatum Then
    .Range("B" & Zeile).Delete Shift:=xlToLeft
    End If
    Next Zeile

    MinDatum = Application.Min(.Cells(letzteZeile, 2))

    Loop Until MinDatum >= Buchungsdatum

    Das Problem ist, dass als MinDatum hier immer der Wert "00:00:00" gefunden wird und das ganze somit zu einer Endlosschleife wird.

    MinDatum ist als Date deklariert. Den Bereich B2 bis E8 habe ich vorher ebenfalls das Format Datum gegeben. Der Vergleich bei der Until Bedingung sollte also funktionieren.
    Ich hab zunächst gedacht, dass es an den leeren Zwischenzeilen liegt, da diese quasi ja den Wert 0 besitzen und habe diese deshalb mit einem Autofilter ausblenden lassen. Das hat aber leider nichts gebracht.

    Habt ihr eine Idee wo hier der Fehler liegt oder habt evtl. einen anderen Ansatz um zum gleichen Ergebnis zukommen? Vielen Dank vorab.

      

    Betrifft: AW: Min Funktion gibt falschen Wert aus von: Gerd L
    Geschrieben am: 01.05.2017 00:12:40

    Hallo vorab!

    Sub bbb()
        
        Dim dteMin As Date, objCell As Range
        
        
        dteMin = CDate(Rage("A1"))
            
        For Each objCell In Range("B2:E8")
        
            If CDate(objCell.Value) < dteMin Then objCell.ClearContents
        
        Next
    
        Range("B2:E8").SpecialCells(xlCellTypeBlanks).Delete shift:=xlToLeft
        
    
    End Sub
    Gruß Gerd


    Beiträge aus den Excel-Beispielen zum Thema "Min Funktion gibt falschen Wert aus"