2017-09-08 131 views
-2

我有幾個範圍的數據集,它是每個7x12單元格和所有排列在列中,所以我想重新排列成行。
某些範圍集可能爲空,所以我會忽略該範圍集。附圖顯示了當前結果和預期結果。
謝謝。

示範圖片:
enter image description herevba編碼重新排列數據集

+3

您的文章僅包含需求,並沒有從您身邊顯示您試圖解決問題的特別努力。爲了讓我們能夠幫助你,你需要展示你到目前爲止所做的(代碼示例)以及特別的問題(「代碼拋出異常...」)。看看[這篇幫助中心文章](https://stackoverflow.com/help/how-to-ask)即可開始使用。 – vatbub

+0

你說你的數據是每個'7x12',但在你的示例輸出中它是每個'4x5'。這是什麼? – Tom

回答

0

你可以試試這個。請查看列表並針對您的場景進行更新

Public Sub DataRearrange() 
    Dim LastRowInSet As Long, LastCol As Long, LastRowInTransposedData As Long, ColumnIncrease As Long 
    Dim j As Long 

    ' Change this to the width of your repeating data set 
    ColumnIncrease = 4 
    ' Change this to your relevant Sheet Name 
    With Sheets("InsertYoursheetNameHere") 
     LastCol = .Cells(1, .Columns.Count).End(xlToLeft).Column 

     ' There's no point doing it if there's only one set so lets Exit 
     If LastCol <= ColumnIncrease Then Exit Sub 

     For j = ColumnIncrease + 1 To LastCol Step ColumnIncrease 
      LastRowInSet = .Cells(.Rows.Count, j).End(xlUp).Row 
      LastRowInTransposedData = .Cells(.Rows.Count, 1).End(xlUp).Row 
      Range(.Cells(LastRowInTransposedData + 1, 1), .Cells(LastRowInTransposedData + LastRowInSet, ColumnIncrease)).Value2 = Range(.Cells(1, j), .Cells(LastRowInSet, j + ColumnIncrease - 1)).Value2 
      Range(.Cells(1, j), .Cells(LastRowInSet, j + ColumnIncrease - 1)).Clear 
     Next j 
    End With 
End Sub 
+0

非常感謝,我解決了這個問題,現在我又有了一個問題。是我想複製每29個單元格,並從C2開始,並將它們粘貼到K5之後,之間的間隔相同,對於這種情況,這是29。我的編碼是下面:子拷貝() 昏暗lngRow只要:lngRow = 1 昏暗lngLoop只要:lngLoop = 29 做,直到爲IsEmpty(細胞(lngLoop,1)) 細胞(lngLoop,1).copy細胞(lngRow, 「K3」) lngLoop = lngLoop + 29 lngRow = lngRow + 29 循環 結束小組 – WHX

+0

如果這個解決您的問題,請把它標記爲接受的答案(刻度,以它的左側)。你需要爲恐怕的其他問題開始一個新的問題 – Tom