- ベストアンサー
セル内の値が0のセルをクリアするマクロ
- エクセル2003の集計表において、セル内の値が0のセルを空白にするマクロを作成しました。
- 特定の範囲のセルに対して、値が0である場合にセルをクリアする処理を行います。
- マクロを使用することで、手作業で値が0のセルを探し、クリアする手間を省くことができます。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
'列の分のFor~Nextを追加してやれば1箇所分だけ記述するだけで済みます。 Sub 数字0クリア() '2012年2月3日節分 Dim 最終行 '最終列をG列で求めます 最終行 = Cells(Rows.Count, 7).End(xlUp).Row Application.ScreenUpdating = False For i = 8 To 39 For 処理行 = 4 To 最終行 If Cells(処理行, i).Value = 0 Then Cells(処理行, i).ClearContents End If Next 処理行 Next i End Sub 'For i = 8 To 39で列の変数を設定してやる(H列からAM列まで) 'For 処理行 = 4 To 最終行の処理が終わるとiが8、9、10と変化していきます。
その他の回答 (4)
- hallo-2007
- ベストアンサー率41% (888/2115)
No4です。失礼しました Columns("H:M").Replace "0", "", xlWhole で試してみてくださいね。 Columns("H:M").Replace "0", "" なら、30 とかの 0まで消えてしまいますので。
お礼
Columns("H:M").Replace "0", "", xlWhole はい、これは気がついていました。 データ内には 1.04 とか0.05 とか400とかありますので。 ありがとうございました。
- hallo-2007
- ベストアンサー率41% (888/2115)
既に回答が出ていますが、 For(繰り返し)の勉強なら 縦方向の繰り返しの中に横方向の繰り返しを加えることになりますね。 ただ、やりたい内容を H~M列に含まれる 0 を空白に置き換える と考えると(たぶん、最終列の取得も不必要では?) Columns("H:M").Replace What:="0", Replacement:="" の一行で済むのではないでしょうか? それで足りるかどうかは マクロの記録で H~M列の選択 置き換え の実行で 試してみてください。
お礼
システムから吐き出されたデータは 列AMまでしかないので Columns("H:AM").Replace What:="0", Replacement:="" で行いました。 NO.5で月頂いた件はきがついていましたので Columns("H:AM").Replace "0", "", xlWhole で行いました。 ありがとうございました。
- mu2011
- ベストアンサー率38% (1910/4994)
わざわざVBAでクリアする必要があるのでしょうか? 事前にセルの書式設定で0を非表示するだけで十分の様な気がします。 ユーザ定義で「G/標準;-G/標準;」で設定で如何でしょうか
お礼
教えていただいた方法でできました。 最初に説明しなくてすいません。 確かに非表示ですが セル内にデータが0として存在しているので まずいです。 この表はシステムから毎夜夜間バッチで出力されるので 毎日、この作業が必要でして マクロ化を考えました。 ありがとうございました。
- kybo
- ベストアンサー率53% (349/647)
「置換」機能を使うのが、簡単だと思います。 Sub 数字0クリア() '2012年2月3日節分 Dim 最終行 '最終列をG列で求めます 最終行 = Cells(Rows.Count, 7).End(xlUp).Row Application.ScreenUpdating = False '0のセルを置換で消す Range(Cells(4, 8), Cells(最終行, 13)).Replace 0, "", xlWhole Application.ScreenUpdating = True MsgBox "終了しました" End Sub
お礼
Range(Cells(4, 8), Cells(最終行, 13)).Replace 0, "", xlWhole ↓ Range(Cells(4, 8), Cells(最終行, 39)).Replace 0, "", xlWhole であっという間に完了しました。 ありがとうございました。
お礼
For Next の中でもう1回 For Next をまわすんですね。 うまく出来ましたね。 ありがとうございました。