2016-11-18 18 views
0

動作するコードをオンラインで見つけましたが、私の目的のために変更していません。スプレッドシートの各エントリには、エラーメッセージを含むセルを空白にする目的で、異なる数式とIferror関数が含まれています。たとえば、セルE3がある式を使ってセルF3に依存しているとします(説明のためにF3/2.5とします)。セルF3にエントリがないと、セルE3にエラーメッセージが表示されることは明らかです。このため、IFERROR関数を使用してセルを空白として表示します。マクロボタンをクリックした後に空の行を削除したいときに問題が発生します。ただし、そのセルにはエントリ(エラーメッセージを返す式)があるため、そのセルは削除されません。また、私は3つの異なる選択範囲でこのコードを実行する必要があります。誰か助けてもらえますか?私が見つけたコードはこのフォーラムの別のスレッドからのものです:特定の条件で特定の行を削除するExcel VBA

`sub foo() 
    dim r As Range, rows As Long, i As Long 
    Set r = ActiveSheet.Range("A1:Z50") 
    rows = r.rows.Count 
    For i = rows To 1 Step (-1) 
    If WorksheetFunction.CountA(r.rows(i)) = 0 Then r.rows(i).Delete 
    Next 
    End Sub` 

ありがとう!

+1

私たちがお手伝いできるように、コードに変更を投稿していただけますか? – RCaetano

+0

もし列Eをチェックしているだけであれば 'If Cells(i、5).Value =" "Then r.rows(i).Delete' –

+0

@Tem ....全範囲をチェックインしたいのですが? – Syed

答えて

0

EDIT:

=SUMPRODUCT((LEN(A1:F1)>0)*1) 
:文がオートフィルタに追加した場合は、以下のSUMPRODUCTでスプレッドシートの列を設定することになるでしょう何の空白

がなかったときには、行を削除されたよう

これは、0より大きい長さを持つセルの値の数を計算して空白ではないため、偽のデータの小さなサンプルでテストした結果、セル参照を調整する必要があります。可視セルの行全体を

For i = rows To 1 Step (-1) 
    If Cells(i,"G") = 0 Then r.rows(i).Delete 'My formula is in column "G" 
Next 

または自動フィルタを設定し、削除します:

あなただけループすることができますこれに続いて

Dim lrow As Integer 

If Not WorksheetFunction.CountIf(Range("G:G"), "0") = 0 Then 
Range("A1:G1").AutoFilter 
Range("A1:G1").AutoFilter Field:=7, Criteria1:="0" 
lrow = Cells(rows.Count, 7).End(xlUp).Row + 1 
Range("G2:G" & lrow).SpecialCells(xlCellTypeVisible).EntireRow.Delete 
Range("A1:G1").AutoFilter 
End If 

に先頭列を使用しての唯一の問題あなたが数式を補充する必要があるので、あなたは多くのデータが出てきているかどうかを計算します。ただし、コード内で自動補完を使用することができます。

+0

ありがとうありがとうございます! – Syed

関連する問題