• ベストアンサー

Excelで、特定の条件を満たすと指定のセルの値を消去するマクロ

WindowsXP環境でExcel2000を使用しています。現在A列に日付、B列にA列の日付を引数として得た曜日を表示させ、条件書式で曜日が土日ならセルの色が赤くなるように設定しています。C列には始業時間D列は終業時間がそれぞれ予定としてあらかじめ入力した状態にしてあります。そこで、上記によって取得した曜日が土日にあたるセルの右側、つまりB列およびC列の値を自動的にもしくはマクロ処理で消去したいのですが、なにか良い方法はないでしょうか? よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • ja7awu
  • ベストアンサー率62% (292/464)
回答No.2

> 曜日が土日にあたるセルの右側、つまりB列およびC列の値を > 自動的にもしくはマクロ処理で消去したいのですが・・・ 消すのはC、D列ではないのですか? もし、B、C列のときは、Rng.Offset(, 2) の2を1にします。 こんな感じで如何でしょうか。 Sub Test1() Dim Rng As Range For Each Rng In Range("A1", Range("A65536").End(xlUp))   If IsDate(Rng.Value) Then     If Weekday(Rng.Value, 7) < 3 Then       Rng.Offset(, 2).Resize(1, 2).ClearContents     End If   End If Next Rng End Sub

yamashiro
質問者

お礼

すばらしい。完璧です。 あ、そうでした。CD列でした。 でも本当のフォーマットは、日付がB5~B35に入っていて、曜日はC5~C35、消したい列はDE列なんです。 書いていただいたプログラムから推測しようとしたんですが、私の知識では無理みたいです。恐縮ですが、教えていただけるとありがたいのですが。

その他の回答 (4)

  • ja7awu
  • ベストアンサー率62% (292/464)
回答No.5

> このB65536 とはいったいどういう意味なんですか?  B列の最終行です。 2^16(2の16乗)= 65536 B列のデータが入っているセルの最終行を調べるため、手作業で言えば、 セルB65536をアクティブにして、Ctrlを押しながら ↑キーを押して 止まったセルを求めています。 実際に操作して確認してみてください。

yamashiro
質問者

お礼

なるほど、そういうことでしたか。 もう少し勉強します。 おかげさまで今回の目的は完全に達することができました。どうもありがとうございました。

  • ja7awu
  • ベストアンサー率62% (292/464)
回答No.4

次のようになります。"B5" と "B65536" のところを変えただけです。 B5は、日付けの先頭セルです。 データの量は記入してあるデータ全て該当します。 Sub 土日CD列クリア() Dim Rng As Range For Each Rng In Range("B5", Range("B65536").End(xlUp))   If IsDate(Rng.Value) Then     If Weekday(Rng.Value, 7) < 3 Then       Rng.Offset(, 2).Resize(1, 2).ClearContents     End If   End If Next Rng End Sub

yamashiro
質問者

お礼

できました。 すごいです。 でも、このB65536 とはいったいどういう意味なんですか? 是非ご教授お願いします。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

Sub test02() Worksheets("sheet2").Select d = Range("a1").CurrentRegion.Rows.Count For i = 1 To d  If Weekday(Cells(i, "A")) = 1 Or Weekday(Cells(i, "A")) = 7 Then   Cells(i, "B") = ""   Cells(i, "C") = ""  End If Next i End Sub

yamashiro
質問者

お礼

どうもありがとうございました。

  • dejiji-
  • ベストアンサー率38% (327/858)
回答No.1

消したいセルにもう一つ条件を追加すれば、 「数式を」で、 =WEEKDAY(A1,3)>=5 とし、文字を白にすれば、見かけ上は消えたことになります。ただし、ブランクではありません。

yamashiro
質問者

お礼

ご回答ありがとうございます。ただ、最終的に計算し、集計しているものですから、見えなくなるだけでは今回の目的を達成できません。 何か良い方法はないでしょうか?