让我们以该列表为例
“ 1,2,3,8,9,10,11,12,55,56,57”
如您所见,我有一个列表,该列表通常以1的增量增加,但是经常跳过。
在此示例中,我有三组连续的数字,分别是1-3、8-12和55-57。
我需要一个给出两个列表的公式。每个组中的第一个数字,最后一组。
例如,第一个列表将是1、8和55。
另一个列表是3、12和57。
任何帮助将不胜感激。
答案 0 :(得分:1)
对于这个问题,我使用:
请尝试以下操作:
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
答案 1 :(得分:1)
您也可以使用数组公式:
每个组的开始
=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)),"")
必须使用 Ctrl Shift Enter
输入最后两个公式可以进一步完善以适应可变数量的行。