
エクセル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も見ています
-
プロが教える店舗&オフィスのセキュリティ対策術
中・小規模の店舗やオフィスのセキュリティセキュリティ対策について、プロにどう対策すべきか 何を注意すべきかを教えていただきました!
-
マクロ 特定のセル値のみクリアする
Visual Basic(VBA)
-
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
エクセル マクロ オートフィルの終点の指定について
Excel(エクセル)
-
4
EXCEL VBAで全選択範囲の解除
Excel(エクセル)
-
5
【EXCEL】【VBA】空欄は飛ばして処理する方法を教えて下さい。
Excel(エクセル)
-
6
Excel VBAで同じフォルダ内のファイルを開くには?
Excel(エクセル)
-
7
Excelの空文字セルの削除方法を教えてください
Excel(エクセル)
-
8
エクセルで在庫表作成、数量がすべて0の行を削除したい。
Excel(エクセル)
-
9
数式による空白を無視して最終行を取得するマクロ
Excel(エクセル)
-
10
数式の結果が空白の時の空白扱い
Excel(エクセル)
-
11
VBAで空白セルにのみ数値を代入する方法
Excel(エクセル)
-
12
【Excel VBA】指定行以降をクリアするには?
Visual Basic(VBA)
-
13
エクセルのマクロで、選択範囲の空白行を削除する方法
Excel(エクセル)
-
14
選択範囲の空白セルに0を入れるマクロ
Word(ワード)
-
15
VBA 条件が一致した場合のみコピーする
その他(ビジネス・キャリア)
-
16
マクロで#N/A"のエラー行を削除したい"
Visual Basic(VBA)
-
17
特定の複数のシートに同じ処理をさせたい
Excel(エクセル)
-
18
【VBA】特定の値が入った行をコピーして別シートに貼り付ける方法をおしえていただきたいです。
Excel(エクセル)
-
19
VBAで繰り返しコピーしながら下へ移動させる方法
Excel(エクセル)
-
20
VBA別シートの最終行の次行へ転記したい。
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
人気Q&Aランキング
-
4
VBAでループ内で使う変数名を可...
-
5
EXCEL VBA マクロ 実行する度に...
-
6
DoEventsがやはり分からない
-
7
findは動くがfindnextがマクロ...
-
8
UMLでの例外処理
-
9
音声マークを一括非表示にしたい。
-
10
VB.NET Excelを読み込んでDataT...
-
11
switch の範囲指定
-
12
VBの質問#if 0 then ってどう...
-
13
Do~Loopした回数をカウントしたい
-
14
vbaの質問です。初心者です。 ...
-
15
リョウ・・・量?料?
-
16
月度は何て読みますか?
-
17
再帰処理を途中で抜けるには
-
18
コンボボックスの値判定
-
19
2重のDo~Loopは?
-
20
FFTの結果ついて
おすすめ情報
公式facebook
公式twitter