Excel宏移动行

时间:2017-03-03 19:14:23

标签: excel vba excel-vba

我有一个示例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

让我知道您需要哪些其他信息来帮助解决这个问题。

2 个答案:

答案 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行在到达时也是空白。