Option Explicit
Function flatten(ByVal r As Range, Optional delimiter As String = "", _
Optional bycol As Boolean = False) As String
'appiattisce un range riga per riga e restituisce una stringa
'(solo celle non vuote)
'si può specificare un delimitatore tra i
'diversi valori e se si specifica "bycol:=True", l'appiattimento è
'effettuato riga per riga invece che colonna per colonna
Dim vect() As Variant, v As Variant, i As Integer, s As String
Dim col As Range
If bycol Then
s = ""
For Each col In r.Columns
s = s & Join(Application.Transpose(col), delimiter)
Next
flatten = s
Else
ReDim vect(0 To r.Cells.Count - 1)
For Each v In r.Cells
vect(i) = v
i = i + 1
Next
flatten = Join(vect, delimiter)
End If
End Function
|