こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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

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

投稿日時 - 2004-01-24 13:06:49

QNo.759655

困ってます

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

> 曜日が土日にあたるセルの右側、つまり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

投稿日時 - 2004-01-24 14:08:07

お礼

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

投稿日時 - 2004-01-24 14:31:16

ANo.2

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(5)

ANo.5

> このB65536 とはいったいどういう意味なんですか? 

B列の最終行です。 2^16(2の16乗)= 65536

B列のデータが入っているセルの最終行を調べるため、手作業で言えば、
セルB65536をアクティブにして、Ctrlを押しながら ↑キーを押して
止まったセルを求めています。

実際に操作して確認してみてください。

投稿日時 - 2004-01-24 17:54:44

お礼

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

投稿日時 - 2004-01-24 21:10:59

ANo.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

投稿日時 - 2004-01-24 15:06:09

お礼

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

投稿日時 - 2004-01-24 15:17:08

ANo.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

投稿日時 - 2004-01-24 14:57:49

お礼

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

投稿日時 - 2004-01-24 21:09:20

ANo.1

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

投稿日時 - 2004-01-24 13:44:17

お礼

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

投稿日時 - 2004-01-24 13:55:46

あなたにオススメの質問