Tenho certeza de que isso não é possível com uma fórmula básica. No entanto, eu também tive essa necessidade antes, e eu escrevi uma função de planilha:
Public Function ConcatInts(target As Range) As String
Dim s As String
Dim i As Integer
Dim n0 As Long
Dim n1 As Long
Dim n2 As Long
Dim flag As Boolean
n0 = 0
n1 = target.Cells(1).Value
n2 = n1
flag = False
For i = 2 To target.Cells.Count
If IsNumeric(target.Cells(i).Value) Then
n2 = target.Cells(i).Value
If n2 = n1 + 1 Then
If Not flag Then
n0 = n1
s = s & n1 & "-"
flag = True
End If
ElseIf n2 <> n1 Then
If n1 = n0 + 1 And right(s, 1) = "-" Then
s = left(s, Len(s) - 1) & " "
End If
s = s & n1 & " "
flag = False
End If
n1 = n2
End If
Next
If n1 = n0 + 1 And right(s, 1) = "-" Then
s = left(s, Len(s) - 1) & " "
End If
s = s & n1
ConcatInts = s
End Function
Para usar isso, você precisa abrir o editor do VBA pressionando ALT + F11. Em seguida, clique com o botão direito do mouse na pasta de trabalho e selecione Inserir- > Módulo:
Em seguida, basta copiar e colar o código no módulo.
Agora você pode chamá-lo como faria em uma função normal:
=ConcatInts(A1:I1)
Observe que essa função pula as células que contêm texto, converte automaticamente números de ponto flutuante em números inteiros e descarta duplicatas. Também requer que seus números sejam classificados.
Não se esqueça de salvar sua pasta de trabalho como uma pasta de trabalho habilitada para macro (XLSM).