我有一个命名的数据范围,称为“数据”。我正在尝试找到一个公式或数组公式,它将在新的单元格范围内返回数据,但是所有空白行都会丢失。
即。 data
是:
row x y
1 A 77
2
3 B 23
4 A 100
5
我的新范围是:
row x y
1 A 77
3 B 23
4 A 100
如果空行最终位于数组的末尾,则可以。到目前为止,我很难过
答案 0 :(得分:4)
您应该使用特殊单元格方法。使用vba或手动。
手动强>
2007/2010
选择列A
Home Tab -Find&选择 - 转到特别 - 空白 - 确定
主页选项卡 - 删除单元格 - 整行 - 确定
<强> 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
<强>公式强>
如果你真的需要一个公式,请看一下:
答案 1 :(得分:2)
为什么不使用过滤器从适当的列中排除空白?
或者,您可以创建一个额外的标志列,根据您的空白条件(例如IF(OR(X="",Y=""),0,1)
)指定要包含的每一行,并使用它来过滤您的数据。
答案 2 :(得分:2)
我喜欢克里斯的建议。 这是一种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