Una famiglia di software per fogli di calcolo Microsoft con strumenti per l'analisi, la creazione di grafici e la comunicazione dei dati.
Nel ringraziare per la soluzione, mi permetto di chiedere se possibile una piccola modifica: quando la serie è completa nella cella dove vi è la funzione appare "#VALORE!". Si potrebbe non visualizzare?
Ciao Giovanni,
Facta non verba ...
'==========>>
Option Explicit
'----------->>
Public Function NumeriMancanti(Intervallo As Range, _
Optional iMin, _
Optional iMax)
Dim arrIn As Variant
Dim oDic As Object, oDic2 As Object
Dim arrOut() As Variant, arrKeys As Variant
Dim i As Long, j As Long
NumeriMancanti = CVErr(xlValue)
arrIn = Intervallo.Value
Set oDic = CreateObject("Scripting.Dictionary")
Set oDic2 = CreateObject("Scripting.Dictionary")
With Application
If IsMissing(iMin) Then
iMin = .Min(arrIn)
End If
If IsMissing(iMax) Then
iMax = .Max(arrIn)
End If
End With
With oDic
For i = 1 To UBound(arrIn, 1)
If Not .exists(arrIn(i, 1)) Then
.Add key:=arrIn(i, 1), Item:=arrIn(i, 1)
End If
Next i
End With
With oDic2
For i = iMin To iMax
.Add key:=i, Item:=i
Next i
End With
With oDic
arrKeys = oDic2.keys
For i = 0 To oDic2.Count - 1
If Not .exists(arrKeys(i)) Then
j = j + 1
ReDim Preserve arrOut(1 To j)
arrOut(j) = arrKeys(i)
End If
Next i
End With
If CBool(j) Then
NumeriMancanti = Join(arrOut, ";")
Else
NumeriMancanti = vbNullString
End If
Set oDic = Nothing
Set oDic2 = Nothing
End Function
'==========>>
Visto la risposta elegante di Paolo, ti farei notare che sia sempre possibile contrassegnare più di una risposta come Risposta; in questo modo riconosceresti la risoluzione del problema e, allo stesso tempo, il valido contributo di più rispondenti.
===
Regards,
Norman