この度は、本ソフトウェアをご使用して頂き、ありがとうございます。 '---------------------------------------------------------------------- 【ソ フ ト名】 稼働日計算拡張関数 【バージョン】 1.06x 【ソフト種別】 フリーソフト 【動作可能OS】 Windows 95/98/ME/NT/2000/XP 【必要なもの】 Excel2000,2002,2003,2007 【開発 言語】 EXCEL VBA 【掲 載 日】 2003年8月30日 【著 作 権】 Copyright (C) WinArrow 【U R L】 http://www.janis.or.jp/~winarrow/ 【電子メール】 winarrow@mhl.janis.or.jp '---------------------------------------------------------------------- ★ソフト紹介   機能:任意の曜日・祝祭日を指定できる稼働日計算関数  休日リスト作成を支援します。   Excelのアドインに土日、祝祭日を除いた稼働日および稼働日数を求める関数があります。    NETWORKDAYS関数・・・・指定した2つのホ付けの間の稼働日の日数を求める。    WORKDAY関数・・・・・・開始日から起算して稼働日数分の過去日または未来日を求める。    EOMONTH関数・・・・・・開始日から起算して指定した月数だけ後(または前)の月の最終日を求める。 ※使用する場合は、何れも分析ツールをインストールする必要あります。   しかし、土日以外を定休日としている企業では、この関数を使うことができません。   そこで、どの曜日でも休日指定できる関数を作成しました。    NetWorkDaysEx関数    WorkdayEx関数    EOMonthEx関数 IsHoliday関数・・・指定日が休日か否か検査する関数です。 WEEKDAYSIF関数 ・・指定期間内の指定曜日の日数を求める関数です。   使い方は、曜日指定を引数に追加しただけで、上記のExcel提供の関数と殆ど同じです。   曜日の指定方法は、日、土の漢字でも、1,7の数字でも可能です。   勿論、土日を指定すれば、Excelの分析ツールと同じ答が返ってきます。      関数の引数である祝祭日のリストを作成するには、「休日リスト作成」マクロをお使いください。 ★インストール方法と設定 ●LZHを任意のフォルダに解凍してください。  ※任意のフォルダとは、通常運用するフォルダです。   TEMP等一時的なフォルダは避けて下さい。  ※解凍前ファイルは、削除して結構です。 ●解凍したファイル(xlsdateex.xla)を、ExcelのAddinフォルダに複写してください。   Addinフォルダは、OS&Excelバージョンにより異なるので、環境を確認して、   適切なフォルダを選択してください。   規定のアドインフォルダの詳細は、library.htmを参照してください。    ◆アドインの参照ボタンで指定する場合は、任意のフォルダでも構いませんが、     設定後、そのファイルやフォルダを削除したり移動すると機能しなくなりますので、     注意してください。 ●Excelを起動して、アドインに追加してください。 (1)「ツール」-「アドイン」のリストの「稼働日計算拡張関数」にチェックをつけます。 ★アンインストール方法 (1)Excel起動中に、「ツール」-「アドイン」のリストの「稼働日計算拡張関数」の   チェックを外します。  (2)エクスプローラで、Addinフォルダの中のxlsdateex.xlaを削除します。 ★[使い方] 【 NetWorkDaysEx 】 機能:指定した2つの日付の間の稼働日(指定曜日、祝祭日を除く)の日数を求める。  書式:NetWorkDaysEx(開始日,終了日,曜日[,休日リスト])      []内は、省略可を意味します。 引数: 曜日は、次の方法で指定します。 漢字(全角)で指定する場合 => 日,月,火,水,木,金,土 数字(半角)で指定する場合 => 1,2,3,4,5,6,7 休日リスト:休日が格納されているセル範囲、または、文字列の配列で指定します。   ※セル範囲は、範囲名を使った方が便利です。        例. セル範囲の場合、E1:E20         文字列の配列の場合、{"2003/7/20","2003/9/15",2003/11/3"} 休日が一つの場合は「{}」で囲む必要はありません。 例 NetWorkDaysEx("2003/8/1","2003/8/31","土,日") 2003/8/1〜2003/8/31の間の土日を除いた日数を求める。   NetWorkDaysEx(A1,B1,"土,日",E1:E20) A1セルとB1セルの間の土日とE1〜E20に入っている休日を除いた日数を求める。   NetWorkDaysEx(A1,B1,"土,日",{"2003/7/20","2003/9/15"}) A1セルとB1セルの間の土日と休日(2003/7/20と2003/9/15)を除いた日数を求める。 ※開始日>終了日の関係にある時は、稼働日は負になります。  (NetworkDays関数互換) 【 WorkdayEx 】 機能 : 開始日から起算して稼働日数分の過去日または未来日を求める。 書式 : WorkdayEx(日数,開始日,曜日[[,休日リスト],表示形式])      []内は、省略可を意味します。  引数 : 日数 : 加算する日数、過去日の場合は、マイナス値 開始日 : 開始日 日付形式 曜日 : 休日とする曜日を文字列形式で指定する。Weekday値(1〜7)で指定 2日以上の場合は、「,」で区切って指定する。 休日リスト : 祝日など特別に休日とする場合指定する。セル範囲も可。 ※セル範囲は、範囲名を使った方が便利です。 表示形式: 計算結果の表示形式をセル、または、文字列で指定します。        セルで指定した場合、指定したセルの表示形式と同じになります。        文字列で指定した場合、指定した通りの表示形式となります。(但し、日付形式のみ)        省略した場合、ワークシート上で自分で表示形式を設定します。 表示形式を指定すると計算結果は、文字列形式になります。 例:WorkdayEx(10,A1,"日,土",,A1)         土日を休日として、A1セルの日付の10日後を求める。 表示形式は、A1セルと同じ WorkdayEx(10,A1,"1,7",E1:E20)        土日とE1〜E20セル範囲に入っている休日を休日リストとして、A1セルの日の        10日後を求める。 WorkdayEx(-10,A1,"1,7",{"2003/7/20","2003/9/15"}) 土日と2003/7/20,2003/9/15を休日として、A1セルの日の10日前を求める。 【 EOMonthEx 】 機能 : 開始日から起算して指定した月数だけ後(または前)の月末稼働日を求める。 書式 : EOMonthEx(開始日,月数,曜日[,休日リスト])      []内は、省略可を意味します。  引数 : 開始日 : 開始日 日付形式 月数 : 加算する月数 前の場合はマイナス値 0を指定すれば当月 曜日 : 休日とする曜日を文字列形式で指定する。Weekday値(1〜7)で指定 2日以上の場合は、「,」で区切って指定する。 休日リスト: 祝日など特別に休日とする場合指定する。セル範囲も可。 ※セル範囲は、範囲名を使った方が便利です。 例:EOMonthEx(A1,0,"日,土") A1セルの日付の当月の月末稼働日を求める。 EOMonthEx(A1,1,"日,土") A1セルの日付の翌月の月末稼働日を求める。 【 IsHoliday 】 機能:指定日が休日か否か検査する。  書式:IsHoliday(日付,曜日[,休日リスト])      []内は、省略可を意味します。 引数:      日付 : 指定日 日付形式 曜日 : 休日とする曜日を文字列形式で指定する。Weekday値(1〜7)で指定 2日以上の場合は、「,」で区切って指定する。 休日リスト: 祝日など特別に休日とする場合指定する。セル範囲も可。 ※セル範囲は、範囲名を使った方が便利です。 戻り値: TRUE : 指定日は休日です。 FALSE : 指定日は休日ではありません。 例:IsHoliday(A1,"日,土") A1セルの日付が"土日"か検査する。   IsHoliday(A1,"",休日リスト) A1セルの日付が"休日リスト内の日"か検査する。 【 WEEKDAYSIF 】 機能 : 開始日から終了日の間の指定した曜日の日数を求める。 書式 : WEEKDAYSIF(開始日,終了日,曜日) 引数: 開始日: 開始日 日付形式 終了日: 終了日 日付形式 曜日は、次の方法で指定します。(指定は、1文字のみ) 漢字(全角)で指定する場合 => 日,月,火,水,木,金,土 数字(半角)で指定する場合 => 1,2,3,4,5,6,7 例:WEEKDAYSIF(A1,B1,"日") A1(開始日)とB1(終了日)の間の日曜日の日数を求める。 【「休日リスト作成」マクロ 】  メニューバーの「ツール」の「休日リスト作成」コマンドをクリックします。  休日リスト作成用のダイアログが表示されます。  このダイアログで、作成する期間(開始年、終了年)を入力します。  デフォルト名:「休日一覧表」に、祝日データが作成されます。  ※銀行用を指定した場合は、12/31〜1/3が固定的に休日に組み込まれます。  休日リストには、デフォルト:「休日リスト」という範囲名が設定されます。  ※この範囲名は、関数の引数として利用可能です。  企業独自の休日を休日リストに追加/削除することができますが、変更した場合は、  セル範囲が変わっている可能性があるので、名前ボックス等で確認/修正してください。  本マクロで作成されるデータは祝日が対象になっていますが、祝日以外も対象にする  こともあるため、敢えて、「休日一覧表」「休日リスト」という表現を使っています。  なお、別のソフトの「企業用カレンダー作成」のカレンダーに設定した企業独自の  休日を抽出して「休日リスト」を作成することもできます。  CAL.MDBのファイルパスを指定するところが用意されています。  カレンダー更新の詳細は「企業用カレンダー作成」のReadme.txtをご参照願います。  ※CAL.MDBの休日を使用する場合の各関数は、 例:=NetworkDaysEx(開始日,終了日,"",休日リスト) のように、「曜日」部分は空白(「""」)としてください。  (曜日指定が休日リストと重複しても計算結果に変わりありません。) -------------------------------------------------------------------------- ★その他 ●Excel2000,Excel2007で動作確認しています。 -------------------------------------------------------------------------- ★[注意事項] ●このソフトを使用した結果については、当方は一切の責任、保証は致しません。 ●このことに同意した上で、ご使用下さい。 ●マクロソースにはパスワードで保護してあります。 ------------------------------------------------------------------------- ★[著作権] ●このソフトはフリーソフトですが、著作権は、WinArrowにあります。  雑誌、ホームページ等に掲載する場合は、ご一報をお願いいたします。   Copyright(c) 2006 WinArrow All rights reserved. ------------------------------------------------------------------------- ★[連絡先] ●ご意見ご要望は次のメールアドレスまでお願い致します。   mailto:winarrow@mhl.janis.or.jp   メールには、   ダウンロードサイト名、   雑誌名、   使用ソフトのバージョン   等を、明記するようお願いいたします。 ------------------------------------------------------------------------- ★履歴 ==== 2003/08/30 V1.000 新規作成 2003/09/01 V1.010 引数名を分かりやすく、関数の説明を表示するようにしました。 2003/09/02 V1.020 WorkdayEXの引数=日数に0を指定した場合の処理を追加しました。 (無限ループの回避) 2003/09/05 V1.030 EOMonthEx関数を追加しました。 2003/10/28 V1.031 NetworkdaysEx関数の不具合を修正しました。  不具合内容:祝祭日に指定した日の翌日が開始日の場合、計算結果が        1日少なく計算されていました。 2006/01/13 V1.032 NetworkDaysEx関数の不具合を修正しました。 不具合内容:開始日>終了日の関係にある場合、計算結果が1日多く      計算されていました。 2006/01/30 V1.040 「IsHoliday関数」を追加しました。  「休日リスト作成」マクロを追加しました。  「企業用カレンダー作成」ソフトのカレンダーデータも利用できます。  引数名が変更になっていますので、使い方も読んでください。 2006/06/28 V1.041 「カレンダーMDB」読み込み処理での不具合を修正しました。 2006/08/08 V1.050 「指定期間内の指定曜日の日数を求める」関数を追加しました。 2008/06/30 V1.060 Excel2007で動作確認をしました。