重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

エクセルで、年月を入力するだけで
その入力された月の平日の日数(土日・祝日を除いた日数)が
自動に入力される方法ってありますか?

つまりA2に『平成21年1月』と入力すると
   A3に『20』と出てくる
と、いう感じ。

さらに、年と月を違うセルに入力(年は年度もあり)した時はどうでしょうか?
つまりA1に『平成20年度』
   A2に『1月』    と入力すると
   A3に『20』と出てくる。
と、いう感じです。

もしおわかりの方がいらっしゃいましたらぜひ教えてください。

A 回答 (9件)

実に難しい問題です。


何が難しいかといえば、平日をどういうふうに定義するかという点です。
祝日決定のルールが、論理的に極めて複雑だからです。
また、春分の日や秋分の日は気象庁が毎年2月(ちょっと不確か)に翌年の春分の日や秋分の日を決定する規定(法律)になっています。
ということは、気象庁の春分の日や秋分の日を決定する仕組が解らなければ、08/01/29時点で09年の春分の日や秋分の日は不明です。
社会的に常識的な休日(盆休、年末年始休、その他独自の休日)の取扱も問題になります。

私の会社では、次の様にして平日(規定出勤日)を定義しています。
○出勤不要日でない日を規定出勤日とする。
 出勤不要日は、リストXXXに記載している日と、それ以外の土日
 **リストXXXには、祝日・盆休(日付は毎年変わる)・年末年始休(日付は毎年変わる)・会社創立記念日を記述します。これを毎年手動にて作成しています。
    • good
    • 1

実に難しい問題です。


何が難しいかといえば、平日をどういうふう定義するかという点です。
祝日決定のルールが、論理的に極めて複雑だからです。
また、春分の日や秋分の日は気象庁が毎年2月(ちょっと不確か)に翌年の春分の日や秋分の日を決定する規定(法律)になっています。
ということは、気象庁の春分の日や秋分の日を決定する仕組が解らなければ、08/01/29時点で09年の春分の日や秋分の日は不明です。
社会的に常識的な休日(盆休、年末年始休、その他独自の休日)の取扱も問題になります。

私の会社では、次の様にして平日(規定出勤日)を定義しています。
○出勤不要日でない日を規定出勤日とする。
 出勤不要日は、リストXXXに記載している日と、それ以外の土日
 **リストXXXには、祝日・盆休(日付は毎年変わる)・年末年始休(日付は毎年変わる)・会社創立記念日を記述します。これを毎年作成します。
    • good
    • 0

ツール


→アドイン
→分析ツール にチェックを入れてください。
    • good
    • 0

前半


D1:D25に祝日リスト
_______A__B_C______D_
_1_平成21年1月_20____2009/1/1_
_2_平成21年2月_19___2009/1/12_
_3____________2009/2/11_
17___________2009/12/23_

B1
=NETWORKDAYS((A1&"1日")*1,EOMONTH((A1&"1日")*1,0),D$1:D$25)
下方向・↓

後半
D1:D25に祝日リスト
[平成以外の昭和などが入らなければもっと簡単ですが..]
______A__B__C_____D_
1_平成20年度_1月_20__2009/1/1_
2_平成20年度_2月_19_2009/1/12_
3__平成21年_1月_20_2009/2/11_
4__平成21年_2月_19_2009/3/20_

C1
=NETWORKDAYS(DATE(YEAR((SUBSTITUTE(A1,"度",)&B1&"1日")*1)+AND(RIGHT(A1)="度",LEFT(B1,FIND("月",B1)-1)*1<4),LEFT(B1,FIND("月",B1)-1)*1,1),EOMONTH(DATE(YEAR((SUBSTITUTE(A1,"度",)&B1&"1日")*1)+AND(RIGHT(A1)="度",LEFT(B1,FIND("月",B1)-1)*1<4),LEFT(B1,FIND("月",B1)-1)*1,1),0),D$1:D$25)
下方向・↓
    • good
    • 0

これは、とりあえずVBAなしではまず無理でしょう(不可能ではないかもしれませんが)。


VBAを使ってもそんな簡単な話ではありません。

1)閏年を判別するためにグレゴリオ暦のルールを解っている必要があります。
http://koyomi.vis.ne.jp/directjp.cgi?http://koyo …

2)春分の日、秋分の日を知るために計算方法を押さえておかなければなりません。
http://koyomi.vis.ne.jp/directjp.cgi?http://koyo …

3)国民の祝日、振替休日などを知るために「国民の祝日に関する法律」を知っている必要があります。
特に、過去の年月についても調べたいのであれば、この法律がいつどのように改正されたのかまでケアする必要があります。
http://ja.wikipedia.org/wiki/%E5%9B%BD%E6%B0%91% …

#1のご回答は、数年分のカレンダーがあらかじめ用意されていることが前提条件のように思います。
それが可能なのであれば、VLLOKUP関数等で解決できると思います。
しかし、何もないところから、年月だけをいれて平日の日数を求めるためには、上述の1)~3)を念頭にVBAを作成する必要があると思います。
    • good
    • 0

WORKDAY関数、NETWORKDAY関数を使ってください



 =WORKDAY(開始日,日数,祭日)
 =NETWORKDAYS(開始日,終了日,祭日)

 A1に開始日
 B1に終了日
 C1からC20に祭日
を入力した場合

 =WORKDAY(A1,B1-A1,C1:C20)
 =NETWORKDAYS(A1,B1,C1:C20)

こんな感じで使います
【分析ツールアドイン】を組み込む必要がありますけどね
組み込み方が分からないのであれば諦めて VLOOKUP関数などを使ってください

日付の年月日を分けてセルに入力するのであれば、DATEVALUE関数を使って日付けを示すシリアル値に直しましょう

 =DATEVALUE(日付文字列)

 =DATEVALUE("平成20年1月20日")
 =DATEVALUE(A1&A2&A3)
などと使います
    • good
    • 0

まぁ、簡単(?)なのは、NETWORKDAYS関数でしょうか?


例えば、
A1セル=2009/1/1
A2セル=2009/1/31
と入力し、セルの書式設定を「ggge"年"m"月"」にしておく。
祝祭日をC1~C10セルあたりに入力しておく
A3セルに
=NETWORKDAYS(A1,A2,C1:C10)
1月1日と2日が祝祭日として登録してあれば「20」と返って来るはずですが。
    • good
    • 0

ありません。


Excelでは日付や曜日を扱うことはできますが、祝日の概念は導入されていないためです。
もし祝日一覧のようなものを入れることができれば半自動化は可能でしょう。

土日だけであれば、4ないし5回ずつありますから、各月の日数(減算で求めるかDATEDIF関数を使うか)と月初めの曜日(WEEKDAY関数)を条件にIF文で判断して日数を求めることが可能かと思います。

また年と月は別のセルにしても同じセルにしても、文字列結合や抽出関数を使えば簡単に結合・分離できるので同じことです。減算で各月の日数を求めるなら、DATE関数の使いやすいように別々のセルに入力しておいた方が良いでしょう。

なお、Excelには年度の概念もなかったと思う(というか年度って組織によって異なりますよね?)ので、IF文等で対応(月が3以下なら年から1を減ずる)しかないかなと思います。
    • good
    • 1

日数の表を作って、VLOOKUPとか、HLOOKUPとか、INDEXを使ってください。



これはヒントです。
「課題の丸投げ」は禁止行為ですので。

やってみれば簡単です。
もっともっと勉強しましょう。

以上
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!