• ベストアンサー

済みません。追加質問です(EXCEL2000使用)

"土・日・祝日・水曜日"抜きのカレンダー作成に、詰まってしまいました。 B5に5月を入れると、B7から5月の土日祝日水曜日を抜いたカレンダーの日にちが 表示されるように関数で持って行くことは出来ませんか。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.3

こんばんは! 一例です。 ↓の画像のように下準備が必要です。 まず、今年の祝日データをシリアル値でF列に作成しておきます。 そしてI2セル(セルの表示形式はユーザー定義からdとして)に =IF(MONTH(DATE($B$4,$B$5,ROW(A1)))=$B$5,DATE($B$4,$B$5,ROW(A1)),"") J2セルに =TEXT(I2,"aaa") という数式を入れ、I2・J2セルを範囲指定 → J2セルのフィルハンドルで3下へ31日目までオートフィルでコピーしておきます。 G2セルには =IF(COUNTIF($J$2:$J$32,"水")<ROW(A1),0,INDEX($I$2:$I$32,SMALL(IF($J$2:$J$32="水",ROW($A$1:$A$31)),ROW(A1)))) これは配列数式になりますので、Shift+Ctrlキーを押しながらEnterキーで確定し 祝日データと同じ行数だけオートフィルでコピーしておきます。 最後に B7セル(セルの表示形式は日付)に =IF(MONTH(WORKDAY(DATE($B$4,$B$5,ROW($A$1))-1,ROW(A1),$F$2:$G$16))=$B$5,WORKDAY(DATE($B$4,$B$5,ROW($A$1))-1,ROW(A1),$F$2:$G$16),"") C7セル(セルの表示形式はユーザー定義から (aaa)としておく)に =IF(B7="","",B7) としてB7・C7セルを範囲指定 → C7セルのフィルハンドルで下へコピー! で画像のような感じになります。 尚、WORKDAY関数を使用するにあたり メニュー → ツール → アドイン → 「分析ツール」にチェックを入れておく必要があります。 以上、参考になれば良いのですが・・・m(_ _)m

7MissShots
質問者

お礼

表まで付けていただき、わかりやすく助かりました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (5)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.6

常連の方の回答が既に出ています。 この問題は関数だけでやろうとすると式が複雑になるように思う。 (1)VBAででもやらないと、やりにくい課題のように思う。 (2)1つは月中の日を全て作業列に持って、除外する日の右セルにでも除外サインを作れば、あとは除外サインの無い行の抜き出し問題になる。抜き出し問題もエクセル関数では難しいが。 (3)質問者は初心者と思うが、無理しないで、土日水を除いた日々なら下記で出来るので、それをつくり 祝日、会社休業日などはセルに色でも付けるか休日というコメントを付けて我慢したらどうです。 質問者は好まないかもしれないが、参考に 例えばG2:I8に ーーーーG列 ーーーーI列 日 1 1 月 2 1 火 3 2 水 4 0 木 5 1 金 6 3 土 7 0 とテーブルを作っておく ーー A1にはッ月初めの土・日・水意外の第1日を入れる。 2011/7/1 金でOK A2セルに =A1+VLOOKUP(WEEKDAY(A1),$H$2:$I$8,2,FALSE) ト入れて下方向に式複写。 結果 2011/7/1 2011/7/4 2011/7/5 2011/7/7 2011/7/8 2011/7/11 2011/7/12 2011/7/14 2011/7/15 2011/7/18 2011/7/19 2011/7/21 2011/7/22 2011/7/25 2011/7/26 2011/7/28 2011/7/29 2011/8/1 18日は祝日だが 祝日テーブルからVLOOKUPで検索してB列に祝日と入れる。または色を変える。 ーーー VBAでもやってみた G2:J8に 日 1 1 1 月 2 0 火 3 0 水 4 1 1 木 5 0 金 6 0 土 7 1 2 を作る。飛ばす日と、次の日までの日数を表にした。 祝日と会社休業日を表にする。下記は7月分だけ。 2011/7/18   1 2011/7/22   1 ' 会社休業日のつもり 標準モジュールに Sub test02() Dim myr As Variant tuki = 7 z = DateSerial(2011, tuki, 1) '1日 i = 1 '1行目 Do If WorksheetFunction.VLookup(Weekday(z), Range("H2:I8"), 2, False) = 0 Then Else z = z + WorksheetFunction.VLookup(Weekday(z), Range("H2:j8"), 3, False) If Month(z) <> tuki Then Exit Sub End If Set myr = Range("h10:h11").Find(z) If myr Is Nothing Then Cells(i, "B") = z z = z + 1 i = i + 1 Else z = z + 1 End If Loop While Month(z) = tuki End Sub ト入れて実行する。 結果はB列。 2011/7/1 金 2011/7/4 月 2011/7/5 火 2011/7/7 木 2011/7/8 金 2011/7/11 月 2011/7/12 火 2011/7/14 木 2011/7/15 金 2011/7/19 火 2011/7/21 木 2011/7/25 月 2011/7/26 火 2011/7/28 木 2011/7/29 金 会社休業日2011/7/22はスキップされています。 十分テストできてないが参考まで。 ーー 8月のテスト 会社盆休み(仮定)を入れて 2011/7/18 '祝日 2011/7/22 '会社休業日a 2011/8/15 '盆休み 2011/8/16 2011/8/17 2011/8/18 としてSet myr = Range("h10:h15").Find(z) にしてやると 2011/8/1 月 2011/8/2 火 2011/8/4 木 2011/8/5 金 2011/8/8 月 2011/8/9 火 2011/8/11 木 2011/8/12 金 2011/8/19 金 2011/8/22 月 2011/8/23 火 2011/8/25 木 2011/8/26 金 2011/8/29 月 2011/8/30 火

7MissShots
質問者

お礼

VBAがあまり出来ませんが、今回挑戦してみます。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。
noname#204879
noname#204879
回答No.5

何処への「追加」か明記しない限り、「追加質問です」なんてな書き込みは無駄なこと! 添付図参照 Sheet2 において、 A1: 空白 A2: =DATE(Sheet1!B$4,Sheet1!B$5,ROW(A1)) 範囲 D2:D17 に休日の日付を入力 B2: =IF(NETWORKDAYS(A$2,A2,D$2:D$17),IF(OR(MOD(A2,7)=4,NETWORKDAYS(A$1,A2,D$2:D$17)=NETWORKDAYS(A$1,A1,D$2:D$17)),"",IF(MONTH(A2)=MONTH(A$2),A2,"")),"") 範囲 A2:B2 を下方にズズーッとドラッグ&ペースト Sheet1 において、 mm/dd に書式設定したセル B7 に次式を入力   =IF(ROW(A1)>COUNT(Sheet2!B:B),"",SMALL(Sheet2!B:B,ROW(A1))) "("aaa")"に書式設定したセル C7 に式 =B7 を入力 範囲 B7:C7 を下方にズズーッとドラッグ&ペースト

7MissShots
質問者

お礼

表題をよく考えてみます。ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。
  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.4

土・日を除く日付はWORKDAY関数で対応できますが祝日や水曜日ととなりますと、これらを一緒にして祝日と同じとして扱うことでWORKDAY関数を使うことができます。 祝日や水曜日の日付については例えばシート2のAおよびB列にその表を作成することにして例えばA1セルには西暦年の2011を、A2セルには前のご質問で述べたように水曜日ですので4と入力します。 B1セルから下方に2011年の祝日などをB19セルまでに入力するとして、B20セルから下方には前のご質問で答えたようにB20セルに次の式(前の式とは若干違っています)を入力して下方にオートフィルドラッグします。 =IF(YEAR(DATE(A$1,1,1)+A$2-WEEKDAY(DATE(A$1,1,1))+IF(WEEKDAY(DATE(A$1,1,1))>A$2,ROW(A1)*7,(ROW(A1)-1)*7))=A$1,DATE(A$1,1,1)+A$2-WEEKDAY(DATE(A$1,1,1))+IF(WEEKDAY(DATE(A$1,1,1))>A$2,ROW(A1)*7,(ROW(A1)-1)*7),"") これでシート2のB列には祝日や水曜日の日付が表示されます。 そこでお求めの表ですがシート1のB4セルに2011、B5セルには5を入力し、B7セルには次の式を入力して下方にオートフィルドラッグします。 =IF(MONTH(WORKDAY(DATE(B$4,B$5,1),ROW(A1),Sheet2!B$1:INDIRECT("Sheet2!B"&MATCH(10^10,Sheet2!B:B))))<>B$5,"",WORKDAY(DATE(B$4,B$5,1),ROW(A1),Sheet2!B$1:INDIRECT("Sheet2!B"&MATCH(10^10,Sheet2!B:B)))) C7セルには次の式を入力して下方にオートフィルドラッグします。 =TEXT(B7,"(aaa)")

7MissShots
質問者

お礼

他の方法もあったのですね。勉強になります。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.2

祝祭日を除外したい場合,エクセルは日本の祝日を知らないので別にリストアップしておいて,これが除外日だよと教えてやる必要があります。たとえばシート2のA1以下に。 すると結局今回のご質問では,水曜日も会社の休日で祝祭日と同じ扱いで構わないので,シート2のA20以下に一つ前のご質問で教わっていた方式で水曜日一覧をずらり並べておきます。 準備: ツールメニューのアドインで分析ツールのチェックを入れる 基本的な数式の作成: B4に年 B5に月 B7セルに =WORKDAY(DATE($B$4,$B$5,0),ROW(B1),Sheet2!$A$1:$A$100) と記入し,下向けにコピー。

7MissShots
質問者

お礼

少し簡単になったようで助かります。ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。
  • Cupper-2
  • ベストアンサー率29% (1342/4565)
回答No.1

答えを書くと質問者さんは大満足なのでしょうが、それでは問題解決力が付かないので 本当の意味での解決には至らないと思います。 ですので、アドバイスに留めさせていただきます。 ・WEEKDAY関数を使うと曜日を判定できます。 ・祝日の一覧を作成して VLOOKUP関数などで参照し、該当があれば祝日と判断できます。  (一覧は年月日で作成しましょう。月日だけでは一致しないことがあります) こういった方法を組み合わせてみてください。 自身で考え、試行錯誤することで、条件が変わっても対処できるようになります。 がんばってください。

7MissShots
質問者

お礼

済みません。ありがとうございます。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 日祝日除く1月のカレンダーを作成したい(Excel)

    Sheet1 A1 2009(年) B1 1(月) C1~縦に日祝日除く1月のカレンダーを表示させたい。 Sheet2 http://www.eva.hi-ho.ne.jp/ohtake/excel/calender2.htmをもとに、 祝日一覧を作りました。(祝日一覧名:祝日) ここからどういう関数を使ったら、日祝日を除く1月のカレンダーが 作成できるかわかりません。 どなたか教えて下さい。 よろしくお願いします。

  • EXCEL 条件付き書式

    過去の質問を検索したのですが見つからなかったので投稿させていただきました。 Excel2010を使用しています。 カレンダーを作成して日曜日と祝日と隔週月曜日の列に条件付き書式で色をつけたいのですが 教えていただけないでしょうか? ちなみに25日締めなので 26日~翌月25日までのカレンダーです。      B 3     26 27 28 29 30 31 1 2 3 4 5 6 7 8 9 10 11 4     土 日 月 火 水 木 金 土 日 月 火 水 木 金 土 日 月 5 ○○  6 △△ 7 ×× 8 合計 B3(26) は 2013/2/26 表示形式 d   B4(土)は=B3 表示形式 aaa 表が揃ってなくてわかりにくいですが日にちの下のセルに曜日がはいるようになっています。 祝日一覧を作成し、祝日と日曜日は=OR(WEEKDAY(B$3)=1,COUNTIF(祝日,B$3)) で条件付き書式で色を変更できたのですが 隔週月曜日はいろいろと試してみたのですがうまく設定できません。 よろしくお願いいたします。

  • EXCEL関数の質問です。A列に2010/10/1という日付が並んだ表

    EXCEL関数の質問です。A列に2010/10/1という日付が並んだ表。土日と祝日の日はB列に「休」と返す関数を作成したいです。 土日だけ「休」と返す関数は作成できますが、祝日を追加できません。 =IF(OR(WEEKDAY(A1,1)=7,WEEKDAY(A1,1)=1),"休","") 今このように作成しています。恐らく祝日の一覧を別シートに設けないといけないと思うのですが・・・ ご助力お願いします

  • エクセルで土日祝と水曜日を除く3日後の数値を表示させる方法はありますか

    一年間の営業サイクル日カレンダーを作成するにあたり、項目Aには土日祝日を除く3日後の日付を表示、項目Bには土日祝日と水曜日を除いた3日後の数字を表示させたいのですが、項目Aはhttp://www.relief.jp/itnote/archives/001105.php を参照し、作成できたのですが、水曜日を除く方法が見つからず、苦戦しております。 上記の祝日を除く方法のように、別シートで水曜日のみの日付を一つ一つ書き出してリンクさせるなどの方法もあるかと思いますが、もう少し簡単にできる方法などありませんでしょうか。 ちなみにExcel2003を使用しています。 お知恵を拝借できれば幸いです。 よろしくお願いします。

  • Excel関数(カレンダー)

    Excel2010を使用し、カレンダーを作っています。 土曜日のセルは「青の網掛け」、日曜日祝日のセルは「赤の網掛け」を、 条件書式にて設定したいのですがうまくできません。 カレンダーは月ごとにシートで分けており、 A列「日にち」、B列「曜日」、C列~E列「予定欄」を設けており、 土日祝日のセルはA~E列全て網掛けにしたいのです。 何卒ご教示頂きたく宜しくお願い致します。

  • Excel2007で土日祝17時以降の勤務時間表示

    タイムカードの計算をしています。 土日祝の17時以降の勤務時間のみを表示させ、最後にその時間の合計を表示させたいです。 日付と曜日のB列、C列は別シートのカレンダーから参照させており、 カレンダーシートのB4に =IF(MONTH(A4)>$D$1,"",A4) ※A4には年月日が、D1には月が入っています。 カレンダーシートの曜日は =IF(B4="","",CHOOSE(WEEKDAY(B4,1),"日","月","火","水","木","金","土")) と入力しています。 また、カレンダーシートは年月を変えると祝日や曜日が変わるようにしており、 それらの曜日や日付けで条件付き書式を設定し文字色が変わるようにしています。 祝日は「祝日」シートで各年毎に「祝日11」等と設定しています。 で、本題ですがP列の17時以降の勤務時間を土日祝のみ表示させ、 その合計時間をP34に表示させたいのです。 分かりにくいかもしれませんが、ご教授お願いいたします。

  • カレンダーで祝日を表示させる。

    EXCELにてカレンダー(勤務表)を作成し、月を変更すると自動的に祝日や土日には曜日の色が変わるようにはしたのですが祝日に該当する日(添付では1日(土)・10日(月))の曜日のセルの上にマウスを持っていくと添付画像のようにコメントが表示されるようにしたいのですが、どのようにすればよいのでしょうか? 色の変更等はVBAを使用していません(関数や条件付書式を使用しています)がとくに拘りはありませんので宜しくお願い致します。

  • 条件付き書式で セルへ色を付ける方法

    条件付き書式でセルへ色を付ける方法を教えてください。 ●Office2013使用 ●別シート「祝日」で、祝日リストを作成済み  (A1、A2…と祝日日付を入れています) ●B1には「1」としか表示されていませんが  yyyy/m/d(aaa)の「d」のみ表示するよう書式設定 ●B2には「水」とした表示されていませんが  yyyy/m/d(aaa)の「aaa」のみ表示するよう書式設定 <やりたいこと> 書式設定(土日はWEEKDAY、祝日はCOUNTF使用)で 土・日・祝日のセルに色を付けたいのですが 3行目(空欄)だけ色が付きません。 日にちと曜日が入っているセルには書式設定で色が付けられます。 色々調べてやってみたのですがギブアップです…。 どなたかお詳しい方、教えていただけないでしょうか。 宜しくお願い致します。

  • エクセルで毎年、日にちが異なる祝日(成人の日等)の返し方

    エクセルでカレンダーを作成しようとしていますが、 つまづいてしまったので、どなたか教えていただけないでしょうか A1セルに指定年月日(例:平成19年1月1日)と 入力したら、該当月の日にちと曜日を表示させ 土日はセルの色を変えるというところまで できたのですが、さらに出勤しない日(国民の祝日)も セルの色を変えたいと思っています。 カレンダーとは別のシートなどに国民の祝日リストを 作成し、条件付き書式でmatch関数を利用して、 国民の祝日リストに合致したセルも色を変えたいのですが、 元旦やこどもの日のように月日が決まっている祝日ではなく 成人の日や海の日など、ある月の第2月曜日という祝日の場合、 A1セルの指定年月日から当該年の成人の日等を返すことは できるのでしょうか? 説明がわかりにくいかもしれませんが、要は、 A1セルが2007/1/1の時に B1セルに当月の第2月曜日を返す C1セルに7月の第2月曜日を返す ということは可能なのでしょうか? よろしくお願い致します。

  • 年度のカレンダー

    条件付き書式を使って土日祝日を色別に表示させるカレンダーを作成しました。 年度のカレンダーのため1月以降も前年の土日祝日が反映されてしまいます。 どのような方法があるのかご教授下さい。

専門家に質問してみよう