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

时间:2013-11-22 11:02:29

标签: excel vba numbers shift sequential

我在“A”栏中有一个起始值(02) 列“B”(06)

中的结束值

在“C”栏中,我想使用“A”和“B”列中的起始值和结束值顺序列出数字范围。但是,我还希望将单元格数据向下移动以阻止任何数据重叠。

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

编辑:

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

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. 初始数据:
  2. enter image description here

    1. 必需输出:
    2. enter image description here

1 个答案:

答案 0 :(得分:0)

你想要这个吗?

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

初步数据: enter image description here =====&gt;

结束数据: enter image description here