
エクセル2003です。
ある集計表において
4行目のH列からAM列まで
数値データがあります。
最終行は常に変化します
この表内にてセルの値が0のセルは
セル内を空白にしたいです。
以下のマクロを作成しましたが
If Cells(処理行, 8).Value = 0 Then
Cells(処理行, 8).ClearContents
をあと(処理行, 13)から(処理行,31)
まで記述しなければなりません。
構文的にも処理的にも不利?
と思うので、なにかいい方法を教えてください。
Sub 数字0クリア()
'2012年2月3日節分
Dim 最終行
'最終列をG列で求めます
最終行 = Cells(Rows.Count, 7).End(xlUp).Row
Application.ScreenUpdating = False
For 処理行 = 4 To 最終行
If Cells(処理行, 8).Value = 0 Then
Cells(処理行, 8).ClearContents
End If
If Cells(処理行, 9).Value = 0 Then
Cells(処理行, 9).ClearContents
End If
If Cells(処理行, 10).Value = 0 Then
Cells(処理行, 10).ClearContents
End If
If Cells(処理行, 11).Value = 0 Then
Cells(処理行, 11).ClearContents
End If
If Cells(処理行, 12).Value = 0 Then
Cells(処理行, 12).ClearContents
End If
If Cells(処理行, 13).Value = 0 Then
Cells(処理行, 13).ClearContents
End If
Next 処理行
Application.ScreenUpdating = True
MsgBox "終了しました"
End Sub
No.3ベストアンサー
- 回答日時:
'列の分の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と変化していきます。
No.4
- 回答日時:
既に回答が出ていますが、
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
で行いました。
ありがとうございました。
No.1
- 回答日時:
「置換」機能を使うのが、簡単だと思います。
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
であっという間に完了しました。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「ご処理進めて頂きますようお...
-
銀行の窓口処理の件で知ってる...
-
エクセルで、日付を入力すると...
-
VBAでCOPYを繰り返すと、処理が...
-
EagleGetというフリーソフトに...
-
【Excel】特定の文字を含むセル...
-
switch の範囲指定
-
取り消し線が入った文字を削除...
-
findは動くがfindnextがマクロ...
-
EXCEL VBA マクロ 実行する度に...
-
VBの質問#if 0 then ってどう...
-
尻毛って処理する?。
-
月度は何て読みますか?
-
FFTの結果ついて
-
VBAのユーザーフォームのテキストボックス...
-
VB6 DoEventsの代わりは?
-
生活保護受給者は性欲をどんな...
-
ボタンクリックイベント 重複...
-
50代の男性の方に
-
リョウ・・・量?料?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「ご処理進めて頂きますようお...
-
エクセルで、日付を入力すると...
-
VBAでCOPYを繰り返すと、処理が...
-
UMLでの例外処理
-
【Excel】特定の文字を含むセル...
-
VBAでループ内で使う変数名を可...
-
EXCEL VBA マクロ 実行する度に...
-
月度は何て読みますか?
-
switch の範囲指定
-
メルカリのメルカードで買い物...
-
お家デートをしててハグを長い...
-
インタラクティブの反対語は?
-
RPGプログラムの*HIVALについて
-
DoEventsがやはり分からない
-
銀行の窓口処理の件で知ってる...
-
セックスレスの既婚女性は自慰...
-
VBの質問#if 0 then ってどう...
-
VB.NET Excelを読み込んでDataT...
-
ボタンクリックイベント 重複...
-
FFTの結果ついて
おすすめ情報