2013-11-22 16 views
1

我在列「A」的開始值(02) 並在列「B」的最終值(06)Excel中:序列號+指定的開始和結束值+偏移列數據向下

在柱「C」我想使用列「A」和「B」中的開始和結束值順序列出數字的範圍。不過,我也想將單元格數據向下移動以停止任何重疊的數據。要更進一步,我不知道這是否可行,但是如果原始行中的數據可以在已使用順序值創建的每個新行中進行復制,這將有所幫助。

編輯:

此代碼創建的序列號指定一個開始和結束值單元格,並沒有細胞下移..這是我在哪裏爲止。

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. 初始化數據:

enter image description here

  • 要求輸出:
  • enter image description here

    +0

    編輯爲你主要的意見。 – Brooks

    回答

    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 =====>

    結束數據: enter image description here

    +0

    嘿Jacouh,是的,謝謝你的工作的一組數字,但我希望這個重複多行。同樣爲了這個工作,它將需要插入新的行以允許順序值的空間(即每次移動當前數據)。想法? – Brooks

    +0

    請通過更新您的問題發佈您的需求像演示文稿。我們可以更直觀地處理... – jacouh

    +0

    我會很高興地發佈圖片,但是我低於10代表。我已經嘗試瞭解決方法,請參閱我在初始文章中鏈接的圖像。 – Brooks

    相關問題