Una famiglia di software per fogli di calcolo Microsoft con strumenti per l'analisi, la creazione di grafici e la comunicazione dei dati.
Ciao Geacs,
Il codice che avevo pubblicato mancava la funzione SortedUniqueList e quindi il codice avrebbe dovuto essere:
'========>>
Option Explicit
'-------->>
Public Sub Tester()
Dim srcSH As Worksheet, destSH As Worksheet
Dim Rng1 As Range, Rng2 As Range, destRng As Range, rCell As Range
Dim vArr() As Variant
Dim LRow As Long, UB As Long
Dim i As Long, iCtr As Long
Const sFoglio\_Sorgente As String = **"Foglio2"**
Const sFoglio\_Destinazione As String = **"Foglio1"**
With ThisWorkbook
Set srcSH = .Sheets(sFoglio\_Sorgente)
Set destSH = .Sheets(sFoglio\_Destinazione)
End With
With srcSH
LRow = .Range("A1").End(xlDown).Row
Set Rng1 = .Range("A2:A" & LRow)
Set Rng2 = .Range("F6:F8")
End With
vArr = Application.Transpose(Rng1.Value2)
UB = UBound(vArr)
For Each rCell In Rng2.Cells
With rCell
If IsDate(.Value) Then
iCtr = iCtr + 1
ReDim Preserve vArr(1 To UB + iCtr)
vArr(UB + iCtr) = CLng(rCell.Value)
End If
End With
Next rCell
vArr = Application.Transpose(vArr)
vArr = SortedUniqueList(vArr)
Set destRng = destSH.Range("A4")
With destRng.Resize(UBound(vArr))
.Value = Application.Transpose(vArr)
.NumberFormat = "dd/mm/yyy"
End With
End Sub
'-------->>
Public Function SortedUniqueList(V As Variant)
Dim oSortedUniqueList As Object
Dim arrOut() As Variant
Dim sStr As String
Dim i As Long
Set oSortedUniqueList = CreateObject("System.Collections.Sortedlist")
With oSortedUniqueList
For i = LBound(V) To UBound(V)
sStr = V(i, 1)
If Not sStr = vbNullString Then
If Not .ContainsKey(sStr) Then
.Add Key:=sStr, Value:=i
End If
End If
Next i
ReDim arrOut(1 To .Count)
For i = 0 To .Count - 1
arrOut(i + 1) = .GetKey(i)
Next i
End With
SortedUniqueList = arrOut
End Function
'<<========
===
Regards,
Norman