Lista intervalo de números no excel [closed]

0

Eu tenho uma lista de números no excel:

1 2 3 6 9 10 11 15 18

Gostaria que uma fórmula listasse os intervalos com uma diferença de 1, portanto: 1-3 6 9-11 15 18

Alguém por favor pode me ajudar? Muito obrigado

    
por C.Nicholls 10.09.2015 / 18:16

1 resposta

0

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).

    
por 10.09.2015 / 18:53