2017-03-03 51 views
-3

我有一個Excel工作表,其中包含6行如下所示(第一列是爲了表示行名稱,而不是實際數據)。Excel宏,將行向上移動

A1 1 2 3 4 5 6 7 8 9 10                                 
A2                                           
A3 11 12 13 14 15 16 17 18 19 20                                 
A4 21 22 23 24 25 26 27 28 29 30                                 
A5                                           
A6 31 32 33 34 35 36 37 38 39 40 

我想要做的就是編寫一個宏,將包含數據的所有行移動到工作表的頂部。我不想刪除任何行。結果如下所示。

A1 1 2 3 4 5 6 7 8 9 10 
A2 11 12 13 14 15 16 17 18 19 20 
A3 21 22 23 24 25 26 27 28 29 30 
A4 31 32 33 34 35 36 37 38 39 40 
A5          
A6 

我有一個簡單的宏來刪除具有類似效果的空白行,但我想移動數據。

Sub RemoveEmptyRows() 
On Error Resume Next 
    Range("Sheet1!A1:Sheet1!A6").Select 
    Selection.SpecialCells(xlCellTypeBlanks).EntireRow.Delete 
End Sub 

讓我知道你需要哪些其他信息來幫助解決這個問題。

+3

只需在其中一列上對數據進行排序,空行將進入最下面。 –

+0

你到目前爲止嘗試過什麼? –

+0

@ScottCraner:這只是我正在處理的更大問題的一個例子。這些數據將位於用戶不得不與之交互的鎖定的隱藏頁面上,因此手動排序不是一種選擇。 – macaday

回答

0

這對我來說非常合適。

Sub SortData() 
Sheets("Data").Select 
Cells.Select 
Selection.AutoFilter Field:=1, Criteria1:="" 
ActiveSheet.AutoFilter.Range.Offset(1, 0).Rows.SpecialCells(xlCellTypeVisible).Delete (xlShiftUp) 
ActiveSheet.AutoFilterMode = False 
Range("A1").Select 
End Sub 
0

如果你要使用去除空白行的排序方法,你需要做兩類,以保持它們的順序(如果這很重要)。

首先,在其中添加一個帶有鍵的列(例如1,2,3,4,5,6),然後按照其他列之一排序(將空行放在底部)。然後再按在刪除或取消選擇具有空白行的鍵之後,帶有鍵的列將這些項目按順序放回,而沒有空白行。

如果要複製和粘貼數據,可以循環檢查第1行是否爲空,如果是這樣,請將第2到7行復制到第1到6行(第7行爲空),然後重複第2行到5(對於第2行,複製第3到7行等)。 不需要檢查第6行 - 如果第1到第5行滿了,那麼第6行是正確的或空白的。如果第1到第5行之一是空白,第6行已經從第一個副本空白。如果在第1行至第4行中有兩個空格,第5行也將空白。