根据用户select删除空行

我有一个电子表格,基本上有两个不同年份的数据集,我把它们放到一个电子表格中进行比较,并通过向任意一组数据添加行来排列。 我已经有一个macros比较我需要的单元格,并插入行以排列数据,有时它错过了一些东西,一个空行被添加到一个数据集,不应该在那里,然后抛出一切后它出了重击。 因此,我必须修复区域中的alignment方式,在未alignment之后删除相应数据集中的所有空白行,然后重新运行我的macros,希望它不会再次混乱。

所以为了加快空白行删除部分,我试图做一个macros为我做这个。 例如,我有2014年的数据从ADC ,2010年的数据从DEEG 。 我试图创build另一个macros,这将允许我select一系列的单元格,如DE69:EG69 ,并且它将遍历DE70:EG70DE71:EG71等同一列的每一行,如果范围内的所有单元格是空白的,请删除范围并向上移动数据。 我尝试和在网上find的一切似乎删除整个行,而不是我select的范围。

我甚至尝试了一些方法,说它将通过select范围和运行macros来工作,但是这似乎也不工作。

所以我试图loggingmacros,然后进行所需的编辑,但我仍然有问题。 我曾尝试使用我的其他macros的一些代码,以允许一个input框popup,并把数据集的开始和结束的列字母,但到目前为止它不工作。

  Option Explicit Sub delee() Dim colX As String Dim colX2 As String colX = UCase(InputBox("Enter the left column", "Compare Columns", "A")) colX2 = UCase(InputBox("Enter the last column", "Compare Columns", "E")) Range(colX & "1000000:" & colX2 & "1000000").Select Selection.SpecialCells(xlCellTypeBlanks).Delete Shift:=xlUp End Sub 

给这个代码一个镜头

 Dim BlankHits as Long Dim NormalHits as Long For Each Target in Selection NormalHits = NormalHits + 1 If Target.Value = "" Then BlankHits = BlankHits + 1 End If If BlankHits = NormalHits Then Selection.Delete Shift:= xlUp End If Next Target 

这当前search您select的单元格。 如果你想要通过不同的范围search,然后改变select的范围到你想要的范围。 希望这可以帮助。

请执行下列操作:

“录制macros”

突出显示单个行上的3或4个单元格。

右键点击“删除”,select“换行”。

点击OK。

然后点击“停止录制”。

进入并查看您的macros。

我结束了这个:

 Sub Macro1() ' ' Macro1 Macro ' ' Range("A5:B5").Select Selection.Delete Shift:=xlUp End Sub 

所以,这显示你的“基本”..你需要做2件事情:

 1) "Select" your range you want to delete. (sounds like you can build this, since you'll know what row you want, and you know what columns, so just build the string, and: `Range(yourstring).select` 2) tell it to delete + shift up .. 

希望帮助.. 🙂

所以如果有人在search时遇到这种情况,下面是我用来得到我所需要的。 从本质上讲,一个input框会出现,并要求select中的第一个单元格和select中的最后一个单元格,在第一个select列中过滤掉空白,select并删除空白行。 这可能需要一段时间取决于你的数据的大小,但它的工作原理。 感谢提供build议和帮助的两位

 Sub deleteblanks() Dim colX As String Dim zzz As String Dim lastRow As Long lastRow = ActiveSheet.UsedRange.Row - 1 + ActiveSheet.UsedRange.Rows.Count MsgBox lastRow colX = UCase(InputBox("Enter The Start Of Data To Be Filtered", "Delete Blanks", "A")) zzz = UCase(InputBox("Enter The End of Data To Be Filtered(Last Column Last Row)", "Delete Blanks", "AM65500")) Range(colX & ":" & zzz).Select Selection.AutoFilter ActiveSheet.Range(colX & ":" & zzz).AutoFilter Field:=1, Criteria1:="=" ActiveWindow.SmallScroll Down:=-3 Range(colX & ":" & zzz).Select Selection.SpecialCells(xlCellTypeVisible).Select ActiveSheet.ShowAllData Selection.Delete Shift:=xlUp End Sub