- ベストアンサー
日にちのカウント
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
No.4・5です! ほんとぉ~っに!何度もごめんなさい。 前回の数式では終了日をB35セルにしていますので、小の月には対応できないと思います。 そこで前回までの方法と一緒ですが、終了日が大の月・小の月両方に対応できる数式にしてみました。 表示したいセルに =NETWORKDAYS(B5,MAX(B5:B35),H4:H19)+COUNTIF(C5:C35,"土") としてみてください。 数式の意味はNETWORKDAYS関数はNo.4で説明したとおりで、 終了日は表示されているシリアル値の最大値(月末)にしています。 (2月及び大の月の行数を考えると、MAX関数の範囲指定は最後の4行だけでも構いません) 尚、日付で表示されると思いますので数式を入力後、セルの表示形式は「標準」にしてください。 親の仇のように何度も顔を出して失礼しました。m(_ _)m
その他の回答 (6)
- imogasi
- ベストアンサー率27% (4737/17069)
A2:A32に2011年7月の1日ー31日の日付があるとします(日付シリアル値であること) 一方G1:G10とかに2011年の祝日日付を作っておきます。(日付シリアル値であること) =SUMPRODUCT((WEEKDAY(A2:A32)<>1)*1)-SUMPRODUCT((MONTH(G1:G5)=7)*1) で除く日曜27日から祝日1日を引いて26日になります。 G1:G5 2011/5/5 2011/5/6 2011/7/21 2011/9/15 以上は5,7,9月の祝日の1部で、手抜きしてます。 本当は1年間分でも祝日をG列に作っておくと良い。この表は毎年見直さないといけない苦しさはありますが、これ以外どうしようもないです。 また祝日は、表を使わないで、祝日を判定する関数など無く、これ以上スマートには行きません。別方法でWorkday関数を使うにしても、表のようなデータをユーザーが定義しないとダメです(世界各国違います)。
- tom04
- ベストアンサー率49% (2537/5117)
NO.$です! たびたびごめんなさい! 投稿した後で大きな間違いに気づきました。 「土」の数をマイナスではなくプラスしなくてはいけませんでした。 NETWORKDAIS関数ですでに「土」の数は入っていなかったのでマイナスではなく、プラスです。 数式を =NETWORKDAYS(B5,B35,H4:H19)+COUNTIF(C5:C35,"土") に訂正してください。 何度も失礼しました。m(_ _)m
- tom04
- ベストアンサー率49% (2537/5117)
こんばんは! 土日・祝日を除いた日数をカウントする関数としてNETWORKDAYS関数というものがあります。 ※ 当方使用のExcel2003以前のバージョンですと メニュー → ツール → アドイン → 「分析ツール」にチェックを入れておく必要があります。 この関数を利用した一例です。 せっかく曜日まで表示するように関数でお考えのようですが、曜日のC列に一手間加えます。 B列がシリアル値だと思いますので、 C5セルに =IF(B5="","",TEXT(B5,"aaa")) という数式を入れオートフィルで下へコピーしておきます。 (○曜日まで表示したい場合は aaa の部分を aaaa とします) これで「土」の数がカウントできますので、 表示したいセルに =NETWORKDAYS(B5,B35,H4:H19)-COUNTIF(C5:C35,"土") としてみてはどうでしょうか? 尚、数式の意味は NETWORKDAYS(開始日,終了日,祝日) ← これで開始日~終了日の間の土日・祝日を除いた日数が表示されます。 (祝日データを空白にすれば、土日を除いた日数となります) それから「土」の数を引いています。 上記の数式の結果は当方の画面では「15」となっています。 参考になれば良いのですが・・・m(_ _)m
- kagakusuki
- ベストアンサー率51% (2610/5101)
B4:C35の表を使わずとも、B1セルとB2セルにおける年と月の指定さえあれば、次の関数で、日曜日と祝日を除いた日数を、求める事が出来ます。 =SUMPRODUCT((MONTH(DATE(SUBSTITUTE($B$1,"年",),SUBSTITUTE($B$2,"月",),ROW(INDIRECT("Z1:Z31"))))=SUBSTITUTE($B$2,"月",)+0)*(WEEKDAY(DATE(SUBSTITUTE($B$1,"年",),SUBSTITUTE($B$2,"月",),ROW(INDIRECT("Z1:Z31"))))>1)*(COUNTIF($H:$H,DATE(SUBSTITUTE($B$1,"年",),SUBSTITUTE($B$2,"月",),ROW(INDIRECT("Z1:Z31"))))=0))
- hrt_shu
- ベストアンサー率42% (27/64)
すいません、こちらのリンクでお願いします。 http://myb35.web.fc2.com/excel/sample.xlsx
- hrt_shu
- ベストアンサー率42% (27/64)
こちらにサンプルプログラムをアップしておきました。 参考にしてください。
お礼
カレンダーから日にちのカウントでご指導いただき、有難うございました。 リンクから見させていただきました換算表には、正直びっくりしました。 たいへんお手間を取らせてしまい、頭が下がります。 自分のような初心者には、たいへん勉強になる換算表です。 今後も別の形で利用し、参考にさせていただきます。 これからも、ご指導ご鞭撻を宜しくお願いいたします。