Kleinste nicht vorhandene Zahl

Nud3l

Mitglied
Ich bin auf der such wie ich in einer Spalte die kleinste nicht vorhandene Zahl ermittele

Zum Beispiel habe ich in der Spalte 1, 2, 4, 2, 4, 6, stehen möchte ich als Ergebnis 3 erhalten

Falls dann die 3 hinzugefügt wird möchte ich danach die 5 erhalten.

Ich habe keine Ahnung wie ich das lösen soll mir scheint das ich es nur über VBA lösen kann und das ich das sehr schön verschachtle mit for..
 
Schreibst eine kleine VBA-Funktion und wendest die nachher an.
Dazu im Workbook im VB-Editor ein Modul anhängen und die folgende Funktion einfügen
Visual Basic:
Public Function kleinsteNichtVorhandeneZahl(myRange As range) As Integer
    Dim MyValues    As Object
    Dim myValue     As Variant
    Dim tempValue   As Integer
On Error GoTo Err_Handler

    Set MyValues = CreateObject("System.collections.arraylist")

    ' Alle Inhalte in ein Array Schreiben.
    For Each myValue In myRange.Value
        If IsNumeric(myValue) And Not IsEmpty(myValue) Then
            If MyValues.Contains(myValue) = False Then
                MyValues.Add CInt(myValue)
            End If
        End If
    Next myValue
    
    'ArrayList sortieren
    MyValues.Sort
    
    'alle Einträge durchgehen und prüfen ob sie den vorhergehenden Eintrag+1 sind
    For Each myValue In MyValues
        tempValue = tempValue + 1
        If Not CInt(myValue) = tempValue Then Exit For
    Next myValue

    kleinsteNichtVorhandeneZahl = tempValue
Exit_Handler:
On Error Resume Next
    Set objArrLst = Nothing
    Exit Function

Err_Handler:
    MsgBox Err.Description
    GoSub Exit_Handler
End Function

Anschliessend in eine beliebige Zelle die Funktion rechnen alssen
Code:
=kleinsteNichtVorhandeneZahl(A1:B6)

Die Funktion funktioniert auch über ein mehrspaltigen Bereich
 
Hmm das sieht ja nicht schlecht aus nur jetzt habe ich das Problem:

Objekterstellung durch ActivX-Komponente nicht möglich.

Ich bin Neuling was VBA betrifft vielleicht habe ich da irgendwas vergessen?
 

Neue Beiträge

Zurück