dynamic删除一系列excel单元格中的空白

我有一个命名的数据范围,称为“数据”。 我试图find一个公式或数组公式,将返回一个新的单元格范围内的数据,但将所有的空白行丢失。

data是:

 row xy 1 A 77 2 3 B 23 4 A 100 5 

而我的新范围是:

 row xy 1 A 77 3 B 23 4 A 100 

如果空白行结束在数组的末尾,那也没关系。 到目前为止,我很难过

你应该使用特殊的单元格方法。 无论是与VBA或手动。

手动

2007/2010

selectA列
首页Tab – 查找和select – 转到特殊 – 空白 – 好吧
主页标签 – 删除单元格 – 整行 – 确定

VBA

 Sub DeleteBlanks() Activesheet.Columns(1).SpecialCells(xlCellTypeBlanks).EntireRow.Delete End Sub 

如果您想保留原始数据并将范围复制到另一个工作表,请尝试如下所示:

 Sub DeleteBlanks() Dim vArray As Variant '// Get an array of your data vArray = Sheet1.UsedRange '// Copy the data to another sheet Sheet2.Range("A1").Resize(UBound(vArray, 1), UBound(vArray, 2)).Value = vArray '// Delete blanks Sheet2.Columns(1).SpecialCells(xlCellTypeBlanks).EntireRow.Delete End Sub 

如果你真的需要一个公式看看这里:

删除空白 – 数组公式

为什么不使用filter来排除适当的列中的空白?

或者,您可以创build一个额外的标志列,根据您的空白条件(例如, IF(OR(X="",Y=""),0,1) )指定每一行的内容,并用它来过滤数据。

我喜欢克里斯的build议。 这是一个vba方法。 尝试一下你的文件的副本。

 Sub delete_empty_rows() Dim last As Long, i As Long last = Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row For i = last To 1 Step -1 If Application.CountA(Range("A" & i).EntireRow) = 0 Then Range("A" & i).EntireRow.Delete End If Next i End Sub