我有一個名爲「數據」的命名數據範圍。我試圖找到一個公式或數組公式,它會返回一個新的單元格範圍內的數據,但所有空行都會丟失。動態刪除一系列excel單元格中的空白
即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
它的確定,如果空行的數組的結尾收場。到目前爲止,我被難倒了
我有一個名爲「數據」的命名數據範圍。我試圖找到一個公式或數組公式,它會返回一個新的單元格範圍內的數據,但所有空行都會丟失。動態刪除一系列excel單元格中的空白
即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
它的確定,如果空行的數組的結尾收場。到目前爲止,我被難倒了
您應該爲此使用特殊單元格方法。無論是與vba或手動。
手動
2007/2010
選擇A列
主頁選項卡 - 查找&選擇 - 轉到特 - 空格鍵 - 好吧
主頁選項卡 - 刪除單元格 - 整個行 - 好
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
FORMULA
如果你真的需要一個公式來看看這裏:
爲什麼不只是使用過濾器從適當的列中排除空白?
或者,您可以創建一個額外的標誌列,根據您的空白條件(例如IF(OR(X="",Y=""),0,1)
)指定要包含的每行,並使用它來過濾數據。
我不想使用過濾器,因爲我想要當我更改原始範圍時自動更新的新範圍。 – Zach
我喜歡克里斯的建議。 這是一種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
行列是否存在或只有x和y?可能會發生,x包含的東西,y不或反之亦然? –
@nick rulez「行列確實存在,並且x和y都是填充的或空白的。從不是x是空白而y不是。 – Zach