我在“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
以下是我正在尝试做的示例:
答案 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
初步数据: =====&gt;
结束数据: