ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

エクセル大好きコミュの☆関数編☆ WEEKDAY(はっぴーまんでー) etc。

  • mixiチェック
  • このエントリーをはてなブックマークに追加
かたつむりこんにちは。

■2000年から1月15日の「成人の日」が、10月10日の「体育の日」が
それぞれの月の第2月曜日に、2003年からは「海の日(7/20)」「敬老の日(9/15)」が当該月の第3月曜日と変更されました。

■■コレを☆☆ はっぴー・まんでー化 ☆☆と呼ぶのだそうです。

1汎用式で算定は?

☆第ww週のpp曜日の割り出し   =(1+ww*7)−WEEKDAY(年、月、pp)
☆mm月の第ww週のpp曜日 pp=07(日曜日)、06(月)、05(火)、04(水)、03(木)、02(金)、01(土)

こんなのを見つけてやってみたら、算出はできました、
が、「式の組立」が理解できません。
解説してほいいのですが、


2祝日の算定を、振替休日と挑戦してみました。

(簡略化のため2000年以降の条件で祝日算定の条件を纏めてみたのが「画像1」です。

※【振替休日】は下記の条件としました。(★)
振替休日 S48(1973)/4/12制定&施行
       ”祝日が日曜にあたるときは、その翌日を休日”
        1973/2/11(日) →振替休日なし    1973/4/29(日),9/23(日) →振替休日あり
   ★ 改正:H17(2005)/5/20制定 , H19(2007)/1/1施行
          ”祝日が日曜にあたるときは、その日後において、
                  その日に最も近い「国民の祝日」でない日を休日”
          5/3(日) → 5/6(水) が振替休日(追加)
          5/4(日) → 5/6(火) が振替休日(追加)
          5/5(日) → 5/6(月) が振替休日(従来通り)



3成果(?)のまとめとして作成したのが「画像2」です。


☆☆☆「万年カレンダー」の作成はイロイロなアプローチがあると思いますが、
今回は関数の利用でやってみました。
☆☆☆VBAでの作成、ぜひご指導してほしいと思います。

☆☆★こんなところにムシがあるよ、こんな処理のほうが!ご指導お願いします。

★★☆資料等もマトマリがありませんが、よろしくです。
参考までに関連の日記です↓
            ↓
http://mixi.jp/view_diary.pl?id=607256079&owner_id=13665070



かたつむり。。misasi

コメント(7)

※肝心なのを忘れていました。

4「振替休日の設定方法」・・画像のとおり結果のみをもとめて、闇雲に継接ぎした感じになってしまいました。


いい方法をよろしくお願いします。

たらーっ(汗)====恥ずかしい訂正の件====

★春分の日 4月に書き込んでいます(ハジ〜)

    「04??」⇒『03??』に訂正です。

 (4月??日は祝日ではありません、ご免なさい。)


※祝日パラメーターを訂正すれば済むようにはなってます。
ん〜っと…
イマイチ状況がつかめていませんあせあせ(飛び散る汗)
☆第ww週のpp曜日の割り出し   =(1+ww*7)−WEEKDAY(年、月、pp)
***** wwとは参照元のセルが何週であるか手入力ということですか?
***** また、ppは下の項目から手入力で引っ張ってくるってことですか?
☆mm月の第ww週のpp曜日 pp=07(日曜日)、06(月)、05(火)、04(水)、03(木)、02(金)、01(土)
もしよければ、式が入っているセル位置と参照元を教えていただけたら解るかと思います冷や汗
***これはweekday関数の表示指定を2にしたときの結果ですね。だからweekdayで関数入れるときは2といれないと誤差がでます。

ここでは時間がなかったので以下の条件で作りました。
これくらいなら関数のほうがずっといいと思うけどたらーっ(汗)
ここから条件が解り次第手を入れていくとしてあせあせ

A列に祝日を一覧で入力すると仮定して、その祝日が日曜ならその翌日を表示しなさい。

*画像が面倒だったので入力でたらーっ(汗)
例題 Aに日付を入力します。B,Cは空白にします。
  A        B    C
1   祝日   振替日 振替日の曜日
2  2007/2/11
3  2007/4/29

*結果以下のようになります。A列の日付が日曜でない場合は振替日、振替日の曜日は表示されません。
  A        B
1   祝日   振替日 振替日の曜日
2  2007/2/11 2007/2/12   月
3  2007/4/29 2007/4/30   月

*************************
Sub Macro2()

Dim a As Integer

For i = 2 To 5 '適当に行5まで処理

a = Weekday(Range("a" & i)) '代数aに曜日に対応する数値を代入

If a = 1 Then 'aが1だったら以下の処理
Range("b" & i) = Range("a" & i) + 1 '対象の日付に1を足す
Range("c" & i) = Range("b" & i)
End If

Next i
End Sub
))usakoさん、ありがとうございます。

? =(1+ww*7)−WEEKDAY(年、月、pp) パラメータの取得について

▼コード化した形で「処理パラ」として表にして参照するように考えました。(トピ立て「画像1」。※小さくて見づらいので一部拡大して画像にしました。)


?マクロ処理について

マクロの組立の理解に役立ちます。サラリと見事です。

※例外処理について・・・祝日が日曜日にあたっても翌日が振替休日にならないときがあります。=2008年5月4日・みどりの日は日曜日ですが翌の5日は祝日・こどもの日なので6日が振替休日になります。

「画像2」につぎはぎ関数処理をあらためてのっけます。
関数で処理するなら、
マクロに組み込むなら、
両面から、よろしくお願いします。

たらーっ(汗)文章になってますか、、()
かたつむりあせあせ(飛び散る汗)===すこし整理してみました。

★★「振替休日の算定式」

☆振替休日の一般的条件☆ 下記の4条件を同時に満たす。(TRUE)
?判定日・前日が祝日である⇒(1-ISERROR(MATCH(判定日-1,祝日一覧,0))) 【A】
?判定・前日が日曜日である⇒(WEEKDAY(判定日-1)=1)   【B】
?判定日・当日が祝日でない⇒(ISERROR(MATCH(判定日-1,祝日一覧,0)))  【C】
?判定日・当日が日曜日でない⇒(WEEKDAY(判定日)<>1)   【D】

☆5月ゴールデンweekの例外処理☆
(3日、4日、5日のいずれかが日曜日のとき6日が振替休日になる。)
   ↓ 
(5月6日が月曜日、火曜日、水曜日のとき振替休日になる。)に読み替え。
(AND(判定日=DATE($G$1,5,6),OR(WEEKDAY(判定日)=2,WEEKDAY(判定日)=3,WEEKDAY(判定日)=4))) 【E】

ーーーーー
【A】*【B】*【C】*【D】+【E】 = 1 のとき 「振替休日」

ーーーーー

★temp列にあれこれSWを立てて累計したり、よりは整理ができた(少しは理路整然となったかな、)とコーヒー干したところです。

★よろしく監修、ご指導をお願いします。
かたつむり。。。

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

exclamation ×2トピ立て時・1 汎用式で算定は? ・・の加筆について

ーーーーーーーーーーーーーーーーーーーーーーーーーーー
exclamation 月の【第N回目】の■曜日の【日付】の割り出し。
ーーーーーーーーーーーーーーーーーーーーーーーーーーー 
  
日付=(1+N*7)−WEEKDAY(DATE(年、月、X日))

■曜日(X日)= 日曜日(7日)、月曜日(6日)、火曜日(5日)、水曜日(4日)、木曜日(3日)、金曜日(2日)、土曜日(1日)

==================================================================

★式をカレンダーにあてて見直しました。

 日  月  火  水  木  金  土
 1  2  3  4  5  6  7
 8  9 10 11 12 13 14
15 16

例)上図のカレンダーで第2回目の日曜日は何日?

何日=(1+N*7)−WEEKDAY(年、月、X)
  =(1+2*7)− 7 ←weekday(date(年、月、7))は土曜日ですから
  =15 − 7
  =8日 が2回目の日曜日。

例)第3回目の日曜日は

  =(1+3*7)ー 7
  =22 − 7
  =15日が3回目の日曜日。


例)3回目の月曜日は

  =(1+3*7)− 6 ←weekday(date(年、月、6))は金曜日ですから
  =16日が3回目の月曜日です。

^^^^^^^^^^^^^^^^^^^^^^^^^^
 日  月  火  水  木  金  土
    1  2  3  4  5  6 
 7  8  9 10 11 12 13
14 15

例)2回目の月曜日は

何日=(1+N*7)−WEEKDAY(年、月、X)
  =(1+2*7)− 7 ←weekday(date(年、月、6))は土曜日ですから
  =15 − 7
  =8日 が2回目の日曜日です。

^^^^^^^^^^^^^^^^^^^^^^^^^^^

  電球電球 1週間は7日でした。 あせあせ

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^   
騒がすばかりで申し訳ありません。

同様の独りよがりをおかしていると思いますが、
呆れずによろしくお願いします。 

ログインすると、みんなのコメントがもっと見れるよ

mixiユーザー
ログインしてコメントしよう!

エクセル大好き 更新情報

エクセル大好きのメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。