人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

Excelについて質問です。

[発送状況]列が「発送前」のとき、
[受付日]列の日付から6営業日過ぎたら、[受付日]列を赤いセルにしてアラートを表示させたい。

条件として、
・[発送状況]列が「発送前」のとき
・6営業日のカウントは、
カレンダーと同じく土日祝日を除いた平日
・アラートの解除に関しては、手段を考えていないですが、
いいアイデア等ありましたら教えていただきたいです。

ソースでの回答を希望します。

1362207095
●拡大する

●質問者: japan-nan
●カテゴリ:コンピュータ
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● きゃづみぃ
●500ポイント ベストアンサー

祝日を求める関数はありませんので 自分で用意しないといけません。

とりあえず E列の3行目から祝日の日付を入れてください。

2013/2/11
というように年月日で。
春分の日とか 毎年 変わりますし、ハッピーマンデー対応や
年末年始の祝日じゃない営業休みなどの日付も 入れます。

Sub チェック()
Dim b As Long
Dim c As Long
Dim at As Date

'現在の日付から 6日前の日付を取得する。

at = Date
b = Cells(Rows.Count, "E").End(xlUp).Row

For a = 1 To 6
 at = at - 1
 While 祝日チェック(at, b)
 Wend
Next a


b = Cells(Rows.Count, "C").End(xlUp).Row
For c = 3 To b
 If Cells(c, "B") = "発送前" And Cells(c, "C") <= at Then
 Cells(c, "C").Interior.ColorIndex = 3
 Cells(c, "C").Interior.Pattern = xlSolid
 End If
Next c


End Sub

Function 祝日チェック(at As Date, b As Long) As Boolean
 Dim c As Long
 If Format(at, "aaa") = "日" Then
 at = at - 2
 祝日チェック = True
 Exit Function
 End If
 
 If Format(at, "aaa") = "土" Then
 at = at - 1
 祝日チェック = True
 Exit Function
 End If

 For c = 3 To b
 If at = Cells(c, "E") Then
 at = at - 1
 祝日チェック = True
 Exit Function
 End If
 Next c

 祝日チェック = False
End Function


Sub アラート解除()
Dim b As Long
Dim c As Long

 b = Cells(Rows.Count, "C").End(xlUp).Row
 For c = 3 To b
 Cells(c, "C").Interior.ColorIndex = xlNone
 Next c
End Sub



何日前というのは
For a = 1 To 6
の 6の値を変更してもらえればいいです。


きゃづみぃさんのコメント
チェックを実行してください。

きゃづみぃさんのコメント
アラートを解除するときは アラート解除を実行してください。

japan-nanさんのコメント
大変ありがとうございました! おかげさまで希望通りのツールとなりました。
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ