§4-4  休日マップ

1.『kt関数アドイン』における休日はパラメータ『休日Map』で指定します。

  kt関数では『休日Map』を指定する事で、下記のような多種多様なカレンダーに
基づいた日付処理が可能です。

      例)第2/4土曜日が休業日
          日曜営業で月曜が休業日
          年末年始/夏期休暇
          普通は土曜日が休業日だが、ある日だけ営業日にする 
          A社にはA社のカレンダー/B社にはB社のカレンダーで日付処理する

  『休日Map』に指定する内容には「固定休日コード」と「休日マップデータ」の
2種類があります。

2.【固定休日コード】

  日曜〜土曜・祝日などに対して「休日」とするかどうかを【 0/1 】で指定します。
有効期間の制限が無く、マップデータの管理が必要ないので簡単に利用できます。
固定休日マップフォーマット
    各桁とも「1:休日とする」 「0:休日としない(営業日)」
    ( 0/1 以外を指定した場合は"0"と見故します)

  『祝日』を休日指定する場合でも、祝日テーブルなどを別個に用意する必要は
ありません
。全て関数内で祝日日付を算出して判定しています。祝日情報に関
しては『§4-2 祝日』を参照して下さい。

      『年始』は【1月1日〜3日】を休日とします。
      『年末』は【12月29日〜31日】を休日とします。
      『大晦日』は【12月31日】を休日とします。

各桁の休日指定を組み合わせると、下記のように定義する事ができます。
(カッコ内は、VBA用に kt関数Addin.xla 内で用意してある定数名です)
  ・休日なし "00000000000@" (kt_休日なし  )
  ・土日を休日 "10000010000@" (kt_土日       )
  ・土日/祝日を休日 "10000011000@" (kt_土日祝    )
  ・日/祝日を休日 "10000001000@" (kt_日祝       )
  ・銀行休日 "10000011101@" (kt_銀行休日 )
  ・官庁(日祝) "10000001111@" (kt_官庁1      )
  ・官庁(土日祝) "10000011111@" (kt_官庁2      )

      ※VBAでの一括処理やシートに大量の式(1000行以上など)を記述する場合には、
          処理時間が多く掛かりますので注意が必要です。(cf:パフォーマンス上の注意)

  「固定休日コード」を「休日マップデータ」に変換するサブルーチン(ktTemp休日Map)を
用意してありますので、「固定休日コード」を利用している環境で一括処理等を行なう場合は、
臨時に「休日マップデータ」を生成して処理の効率化を図ってください。

  ワークシート上の式で「固定休日コード」を使う場合は、メンテナンス性やミスの防止
の為にも、どこかのセルに「固定休日コード」を書き込み、そのセルに【名前】を付けて、
式の中では『セル名』で参照するようにして下さい。
  セルに「固定休日コード」を書き込む場合は、【HyperLink 】が付かないように事前に
書式設定を”文字列”にして下さい。

固定休日マップの利用例

kt固定休日EX 』関数 , 『ktTemp休日Map 』サブルーチンの2つでのみ、固定休日
    コードの曜日部分(1〜7桁目)が拡張されて、第1〜第5曜日の組み合わせ指定が出来ます。




3.【休日マップデータ】

「固定休日コード」だけでは定義できない休業日パターンが必要な場合は、メニューにある
休日Mapの作成】で休日マップデータ(2〜12年分)を自由にカスタマイズして作成します。
(作成したデータはセルに格納して、パラメータにはそのセルを指定します)


「休日マップデータ」では【第2/4土曜日】といった指定も可能です。夏期休暇など規則性の
無い休日は「1日ずつ」登録していきます。本来なら休日となる日だが、ある1日だけ特別に営
業日にすることも可能です(先に休日指定した日付に対して、【日付指定で解除】します)。

「休日マップデータ」には【有効期間】があります。パラメーターに指定した日付、または算出結果
となる日付が、この有効期間の範囲外となる場合には、kt関数はエラー値(#VALUE!)を返します。
詳しくは各関数のリファレンスを参照して下さい。

    休日マップデータ 【 圧 縮 】 4年間 ⇒ 254文字
休日マップ(圧縮)

    休日マップデータ 【 ノーマル 】 4年間 ⇒ 1474文字
休日マップ(ノーマル)


4.休日マップデータに圧縮を用意した理由

  休日マップデータは「1日を1文字」で表している為、最小の『4年間』でも軽く1000文字
を越えてしまいます。エクセルでワークシート全体をコピーする場合
        個々のセルのデータは255文字まで
という制限がある為、圧縮していないデータをセルに収録した状態でワークシート全体を
コピーすると【256文字以降の欠落】によりマップデータが壊れてしまいます。

  これに対処する為に、圧縮データをサポートしています。圧縮するとサイズが〔1/6〕に
なるので、『4年間』の場合は【254文字】となり、上記の問題をクリアできます。『6〜12年間』
の場合は、圧縮しても上記の制限に引っ掛かりますので、何らメリットはありません。

5.休日マップデータの管理について

  『ktMapLinker 関数』により、休日マップを、閉じたままのカレンダー管理ブックにて一元管理
できます。
  個々のブックでは、カレンダー管理ブック上に用意された「4(2)年/圧縮」の休日マップを引数
とした『ktMapLinker 関数』を記述する事により、管理ブックで定義されている休日マップを【ノー
マル】モードで展開できます。
  管理ブック上には「休日マップの作成」により、休日マップを作成してください。期間に応じて、
1〜3個の「4(or 2)年 圧縮」休日マップに分解出力されます。
  既に作成済みの休日マップから、[ktMapLinker 関数]用の分解休日マップを作成する場合は、
「休日マップの作成」で作成したシート上に書き込んである『休日条件』を【読み込み】ボタンに
より取り込み、そのままシートへ再度、カレンダー出力すればOKです。


-------------------------------------------------------------------------
  『kt固定休日EX』関数によって、「休日マップの作成」フォームによるものと全く同レベルの定義
が可能になり、ワークシート上で簡単に【休日マップ】を作成できるようになりました。
  この関数を設けた理由は「ある週の休業日が決定するのが2週間前」といった短期間ごとの
営業カレンダーに簡単に対応出来るようにする為です。予定が決まった段階でワークシート上
の『任意休日/休日解除』一覧に日付を追加していけば、それだけで【休日マップ】が即座に
更新されます。
  ただ、この運用方法であれば、当然の事として、設定情報がワークシート上に誰にでも見れる
状態で置かれている事になる訳ですから、誤って更新してしまう危険性もありますので注意して
下さい。「休日マップの作成」で作ったものならば、基本の休日管理用ブックで管理して、個々の
ブックでは「外部参照式」でその管理ブックから取り込むように運用できますから、誤って更新して
しまう危険性はありません。
  したがって、出来る限り『休日マップの作成』フォームで作るようにして下さい。



Home  kt関数 Top  kt関数 Ref  Back Page  Next Page


角田 桂一 Mail:addinbox@h4.dion.ne.jp CopyRight(C) 2001 Allrights Reserved.