エクセル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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBA処理追加 こちらでご教示頂いたのですが回答完了させてしまいましたのでこちらからまた質問させてく 2 2022/10/27 09:57
- Excel(エクセル) マクロで最終行から上に検索を逆にしたい 1 2022/05/17 18:27
- Excel(エクセル) VBAの指示の内容 昨日こちらでご教示頂いたのですが初心者な為、一つ一つの指示が何をやっているのかわ 2 2022/10/25 18:08
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Excel(エクセル) B列に文字がはいったらA列に数字が入るマクロードを完成させたい 4 2023/04/21 01:58
- Excel(エクセル) なぜExit Subがあるのかわかりません 4 2023/02/19 12:34
- Visual Basic(VBA) VBAでのループ順序について 3 2023/03/13 10:55
- Visual Basic(VBA) VBAで質問ですが、皆さんはどの様に導き出しているのでしょうか? 6 2022/05/03 21:53
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教えるわが家の防犯対策術!
ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!
-
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
VBA Cのセルが空白でなかったら、Aのセルに順番に数値を入力
Visual Basic(VBA)
-
【EXCEL】【VBA】空欄は飛ばして処理する方法を教えて下さい。
Excel(エクセル)
-
-
4
マクロで#N/A"のエラー行を削除したい"
Visual Basic(VBA)
-
5
別のシートから値を取得するとき
Visual Basic(VBA)
-
6
エクセルで特定の列が0表示の場合、その行を非表示にしたい
Excel(エクセル)
-
7
マクロ 特定のセル値のみクリアする
Visual Basic(VBA)
-
8
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
9
特定の文字を条件に行挿入とそこからセルデータを追加するVBAについて
Visual Basic(VBA)
-
10
メッセージボックスのOKボタンをVBAでクリックさせたい
Visual Basic(VBA)
-
11
ExcelVBAを使って、値がある場合は作業を繰り返し実行するプログラムを作成したい。
Visual Basic(VBA)
-
12
数式による空白を無視して最終行を取得するマクロ
Excel(エクセル)
-
13
エクセル マクロ 最終列までを全選択
Excel(エクセル)
-
14
VBAのオートフィルターで該当行がない場合に処理を止めたい
Excel(エクセル)
-
15
【Excel VBA】指定行以降をクリアするには?
Visual Basic(VBA)
-
16
選択範囲の空白セルに0を入れるマクロ
Word(ワード)
-
17
EXCEL VBA 指定範囲内で特定の列に空白セルを含む行を非表示
Excel(エクセル)
-
18
名前をつけて保存した後、元のファイルに戻るには
その他(コンピューター・テクノロジー)
-
19
【VBA】特定の値が入った行をコピーして別シートに貼り付ける方法をおしえていただきたいです。
Excel(エクセル)
-
20
i=cells(Rows.Count, 1)とi=cells(Rows.Count, 2)の違い
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「ご処理進めて頂きますようお...
-
エクセルで、日付を入力すると...
-
【Excel】特定の文字を含むセル...
-
メルカリのメルカードで買い物...
-
VBAでループ内で使う変数名を可...
-
switch の範囲指定
-
EXCEL VBA マクロ 実行する度に...
-
DoEventsがやはり分からない
-
VBA SaveChanges 上書きされない
-
VBの質問#if 0 then ってどう...
-
C言語 b += a ? 1 : 0; の意味
-
UMLでの例外処理
-
リョウ・・・量?料?
-
月度は何て読みますか?
-
iD
-
findは動くがfindnextがマクロ...
-
VBAでGetAsynckeyStatekのエラー
-
TextBoxに日付を自動的に入れる
-
ビープ音を連続して鳴らす
-
VB.NET Excelを読み込んでDataT...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「ご処理進めて頂きますようお...
-
メルカリのメルカードで買い物...
-
エクセルで、日付を入力すると...
-
VBAでループ内で使う変数名を可...
-
【Excel】特定の文字を含むセル...
-
EXCEL VBA マクロ 実行する度に...
-
DoEventsがやはり分からない
-
UMLでの例外処理
-
月度は何て読みますか?
-
switch の範囲指定
-
VBの質問#if 0 then ってどう...
-
セルの値が0はクリアするマクロ
-
VB.NET Excelを読み込んでDataT...
-
Do~Loopした回数をカウントしたい
-
Loadイベント中にほかのイベン...
-
Select Case文でこのようなこと...
-
findは動くがfindnextがマクロ...
-
緊急です。 知り合いから50kgの...
-
リョウ・・・量?料?
-
理不尽、行き場のないイライラ...
おすすめ情報