Excel:序列号+指定的开始和结束值+向下移动列数据

我在列“A”(02)中有一个起始值,而在列“B”(06)中有一个结束值,

在“C”列中,我想用列“A”和“B”中的开始和结束值顺序列出数字的范围。 不过,我也想将单元格数据向下移动以停止任何重叠的数据。

更进一步,我不知道这是否可行,但是如果原始行中的数据可以在已经使用顺序值创build的每个新行中复制,将会有所帮助。

编辑:

这段代码创build指定一个开始和结束值单元格的序列号,并且不会将单元格向下移动。这就是我到目前为止所处的位置。

Sub Serial_numbers() startNumber = [A1].Value endNumber = [B1].Value For i = startNumber To endNumber ActiveCell.Offset(i - startNumber, 0) = i Next i End Sub 

以下是我想要做的事情的示例:

  1. 初始数据:

在这里输入图像说明

  1. 所需输出:

在这里输入图像说明

你想要这个吗?

 Sub sof20143262Serial_numbers() Dim i, iStep, j, jp1, startNumber, endNumber, delta Dim bEmpty As Boolean Dim strRange ' Application.ScreenUpdating = False ' ' intialize empty row key and set the first data row number j: ' bEmpty = False j = 2 ' ' we use temporary memory for CPU time gain: ' jp1: j + 1 ' strRange : range name ' Do While (Not bEmpty) jp1 = j + 1 strRange = "A" & j ' startNumber = Range(strRange).Value endNumber = Range("B" & j).Value bEmpty = IsEmpty(startNumber) ' ' terminate the loop if empty row: ' If (bEmpty) Then Exit Do End If ' ' get number of rows to add: ' delta = endNumber - startNumber If (endNumber < startNumber) Then iStep = 1 delta = -delta Else iStep = -1 End If ' Range("C" & j).Value = startNumber endNumber = endNumber + iStep ' ' insert a row and copy the right side data columns D to E, ' here you can add more columns by changing E to any other letter: ' For i = endNumber To startNumber Step iStep Range(strRange).Offset(1).EntireRow.Insert shift:=xlDown Range("C" & jp1).Value = i - iStep Range("D" & jp1 & ":" & "E" & jp1).Value = Range("D" & j & ":" & "E" & j).Value Next ' ' prepare the next loop: ' j = j + delta + 1 ' Loop ' Application.ScreenUpdating = True End Sub 

初始数据: 在这里输入图像说明 =====>

结束数据: 在这里输入图像说明