【问题标题】:Extract groups of consecutive numbers in Excel list在Excel列表中提取连续数字组
【发布时间】:2018-12-11 09:53:51
【问题描述】:

我们以这个列表为例

"1,2,3,8,9,10,11,12,55,56,57"

如您所见,我有一个列表通常以 1 为增量增加,但通常会向前跳过。

在这个例子中,我有三组连续的数字,分别是 1-3、8-12 和 55-57。

我需要一个给出两个列表的公式。每个组的第一个号码一个,最后一个号码。

例如,第一个列表是 1、8 和 55。

另一个列表是 3、12 和 57。

任何帮助将不胜感激。

【问题讨论】:

  • 关于您如何将列表实际“提取”到其组件/部件中的任何提示?

标签: excel list excel-formula sequence


【解决方案1】:

对于这个问题,我使用:

  1. Sheet1 作为主工作表
  2. 数字出现在 A 列中
  3. 起始编号出现在 C 列中
  4. 结束编号出现在 D 列中

试试下面的:

Option Explicit

Sub test()

    Dim LRL As Long, LRS As Long, i As Long, j As Long, StartValue As Long
    Dim NextValue1 As Long, NextValue2 As Long, Row As Long

    With ThisWorkbook.Worksheets("Sheet1")

        LRL = .Cells(.Rows.Count, "A").End(xlUp).Row
        Row = 0

        For i = 2 To LRL
            If Row < i Then
                StartValue = .Range("A" & i).Value

                    For j = 0 To LRL
                        NextValue1 = .Range("A" & i + j).Value
                        NextValue2 = .Range("A" & i + j).Offset(1, 0).Value

                        If NextValue1 + 1 <> NextValue2 Then
                            LRS = .Cells(.Rows.Count, "C").End(xlUp).Row
                            .Range("C" & LRS + 1).Value = StartValue
                            .Range("D" & LRS + 1).Value = NextValue1
                            Row = .Range("A" & i + j).Row
                            Exit For
                        End If
                    Next j

            End If
        Next i

    End With

End Sub

【讨论】:

    【解决方案2】:

    您也可以使用数组公式来做到这一点:

    每组开始

    =A2
    

    在(比如说)C2 和

    =IFERROR(SMALL(IF(A$3:A$13-A$2:A$12>1,A$3:A$13),ROW()-ROW(A$2)),"")
    

    在 C3 中并下拉。

    每组结束

    =IFERROR(SMALL(IF((A$3:A$13-A$2:A$12>1)+(A$3:A$13=""),A$2:A$12),ROW()-ROW(A$1)),"")
    

    最后两个公式必须使用 CtrlShiftEnter

    输入

    可以进一步细化以处理可变数量的行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-08-26
      • 1970-01-01
      • 2011-01-10
      • 2013-04-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多