2011-08-15 14 views
2

私は 'データ'という名前のデータ範囲を持っています。私は、セルの新しい範囲でデータを返す数式または配列の数式を見つけようとしていますが、すべての空白行がありません。Excelのセル範囲からブランクを動的に削除

row x y  
1  A 77  
2   
3  B 23  
4  A 100  
5  

そして、私の新しい範囲は、次のとおりです:

すなわちdataがある

row x y  
1  A 77  
3  B 23  
4  A 100  

空白行が配列の最後で終わる場合、それは大丈夫です。これまでのところ私は困惑しています

+0

行が存在するのか、xとyだけが存在するのですか? xに何かが含まれていて、yがそれともviceversaではないのでしょうか? –

+0

@nick rulez "行の列は存在し、xとyは両方とも塗りつぶされているか空白です。xは空白で、yはそうではありません。 – Zach

答えて

4

これには特殊なセル方法を使用する必要があります。 vbaまたはManuallyのいずれか。

手動

2007/2010

選択欄
[ホーム]タブ-find &を選択 - 後藤スペシャル - ブランク - [OK]を
[ホーム]タブ - 行全体 - - セルを削除するには、OKを

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

あなたは本当に数式がここで見てみる必要がある場合:

Remove Blanks - Array Formula

2

空白を適切な列から除外するフィルタを使用するだけではどうですか?

また、空白の条件(たとえば、IF(OR(X="",Y=""),0,1))に基づいて含まれる各行を指定し、データをフィルタリングするために使用する追加のフラグ列を作成することもできます。

+0

フィルタを使用したくないのですが、元の範囲を変更すると自動的に更新される新しい範囲。 – Zach

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 
関連する問題