列出 Excel 中的数字范围

列出 Excel 中的数字范围

我在 Excel 中有一个数字列表:

1 2 3 6 9 10 11 15 18

我想要一个公式来列出相差 1 的范围,所以:1-3 6 9-11 15 18

有人能帮帮我吗?非常感谢

答案1

我很确定这不可能通过基本公式实现。不过,我以前也遇到过这种需求,我写了一个工作表函数:

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

要使用此功能,您必须按 ALT+F11 打开 VBA 编辑器。然后从导航窗格中右键单击工作簿并选择插入->模块:

在此处输入图片描述

然后只需将代码复制粘贴到模块中即可。

现在你可以像调用常规函数一样调用它:

=ConcatInts(A1:I1)

请注意,此函数会跳过包含文本的单元格,自动将浮点数转换为整数,并丢弃重复项。它还要求对数字进行排序。

不要忘记将您的工作簿保存为启用宏的工作簿(XLSM)。

相关内容