我有一个示例Excel工作表,其中包含6行,如下所示(第一列用于表示行名称而非实际数据)。
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
让我知道您需要哪些其他信息来帮助解决这个问题。
答案 0 :(得分: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
答案 1 :(得分: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行在到达时也是空白。