• 締切済み

マクロで祝日を表示させる方法を教えてください。

マクロで祝日を表示させる方法を教えてください。 以下のようなマクロを組みたいのですが、どのようにすればいいかわかりません。 どなたか教えていただけないでしょうか。 シートのA1に休日祝日を表示させたい年数を入れる。(例 2011年) A2から下にずらーっと祝日と振替休日が表示される。(例 2011/1/1 元旦) マクロの扱いが全然慣れていないので解説などと一緒に回答していただければと思います。

みんなの回答

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

祝日のリストだで、日付を知っても、エクセルの利用では役に立たないでしょう。知るだけならメモ帳に記録するのとおなじでしょう。 エクセルのWORKDAY関数やその日が祝日に該当するか調べるVLOOKUP関数を勉強しないと役立たないのでは。 Googleでそれらの関数を調べ勉強のこと。VBAでやるだけのメリットはあまりない。日付から計算式で祝日は割り出せないのだから。 既製関数kt関数などを使わせてもらったほうが良い。これもGoogleで照会のこと。 これとてそういうときが来れば、改定しないとならず、忘れず新しいものでダウンロードが必要だろう。

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

補足情報です。 アドインの紹介URLを落としていました。 kt関数アドイン http://www.h3.dion.ne.jp/~sakatsu/ktfunc_main.htm ちなみに、私の場合はそれぞれの祝日を関数で表示させてそのデータを祝日リストとして利用しています。 しかし、ハッピーマンデー制度が挿入されたことにより、特殊なケースでは(例:2015年の9月のシルバーウィーク)、祝日(祝日と祝日の間の国民の祝日)が抜け落ちる可能性がありますので利用時にその休日だけを別途追加するようにしています。

全文を見る
すると、全ての回答が全文表示されます。
  • Turbo415
  • ベストアンサー率26% (2631/9774)
回答No.3

マクロだろうと関数だろうと、エクセルで自動でではしません。 なぜなら、祝日は増えたり日にちが変わったりするからです。曜日なら年月日を指定して関数で出ますけど。 極端な話5年後には祝日が増えているかもしれません。 たとえば、成人の日は20年前は1月15日ですが、いまは一月の第2月曜日です。 30年前にはみどりの日も海の日もありませんでした。みどりの日なんて昭和天皇の天皇誕生日が名前が変わった物だし、その後、4/29から5/4に移動しているし。だから、関数で一発で出て来ると言うことがないのです。 ですから、エクセルで出すなら自分で対応表を作ってそれをLOOKUP関数で引いてくるのが簡単です。 年を左にして一行に一年の表を自作してVlookup関数で引くのが一番です。 ただし、過去はこれで良いですが、来年以降は法律の改正などで祝日が増えたり移動したりすることがあるのであくまで参考になります。

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

 直接の回答ではないのですが……  エクセルでカレンダー関係の作業を使用とすると、けっこう面倒なことがあります。  次のページはそのあたりを詳しく説明してありますので、じっくり読んで参考にしてみてください。 http://www.h3.dion.ne.jp/~sakatsu/CalendarTopic.htm  このページからいける http://www.h3.dion.ne.jp/~sakatsu/ktfunc_main.htm にある「kt祝日一覧表示ツール」などが使えそうです。

全文を見る
すると、全ての回答が全文表示されます。
  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.1

どちらかというと、一般的にマクロよりも関数でそれぞれの祝日を表示させるほうが簡単な対応ですが、この場合でも各祝日を表示するには、かなり複雑な数式を利用する必要があります(法改正を含めて祝日を出すロジックが複雑なため初心者以外でもマクロで対応することはできないと思います)。 祝日の計算方法に詳しい方が作成されたアドインが提供されていますので、今回のような一覧を作成したいならそれを利用されてはいかがでしょう。

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

関連するQ&A

  • 【マクロ】Weekday関数を使って祝日を表示

    はじめまして。エクセルマクロ初心者です。 不慣れな点も多いかと思いますがよろしくお願いいたします。 現在エクセルマクロを利用して下記作業を実施しようとしています。 *************************************************** (1)【Sheet1】A列が平日ならその行をすべて(空白セルも全て)抜き出し、   【入力ミスシート】のA2セルから順番に転記したい (2)【Sheet1】A列が祝日であるかを判別するために【祝日シート】を用意   A列に祝日の日程が記述されている   もし、【Sheet1】A列の情報と【祝日シート】A列の情報が一致するなら   その情報は【入力シート】に転記しない (3)祝日はWeekday関数を用いて7と認識されるようにしたい *************************************************** このために以下のコードを作成いたしましたがうまくいきません。 コード自体も大変おかしくそのためうまくいかないのが分かっているのですが 周りに聞ける人もおらず困っております。 どうかご教示くださいませ。 よろしくお願いいたします。 dim i as variant dim a as integer dim mysh1 as worksheet dim mysh3 as worksheet dim holiday as variant i=2 set mysh1 =Worksheets("sheet1") set mysh3 =Worksheet("祝日") do until cells(i,1).value ="" a=weekday(cells(i,1)) '現在の曜日を日付で取得 'sheet1A列の情報と祝日シートのA列の情報が一致するか調べる holiday = Application.vlookup(mysh1.cells(i,1),mysh3.columns("A"),1,false) 'もし一致するならWeekday関数が曜日にかかわらず0と認識させる Select Case a   case 1,7,0 'もしaが土日祝の場合マクロを終了させます   Exit Sub   Case Else End Select i=i+1 Loop end sub

  • エクセル2000で祝日を表示させたいのですが・・・。

    シート1に予定表、シート2に1年間の祝祭日の表を作成しています。 シート1はC3セルに西暦の2000、D3セルに月の12と表示させています。後は以下のように表示しています。 A   B   C  5 日  曜  備考  6 21  日 7 22  月 8 23  火 天皇誕生日 9 ・  ・ 10 ・  ・ 11 ・  ・ シート2はA列に2002/1/1、B列に元旦というように1年間の祝日の表を作成してます。 VLOOKUPを使って作成しようと思っているのですが上手くいきません。シート2の表の作成の仕方も普通に2002/1/1と入れてしまったら2003年になった場合は使えないので何か別の入力の仕方があるのかなとも思っています。 日にちはA6+1というかたちで表示させております。 教えて下さい。おねがいします。

  • 祝日一覧表から祝日名を引用(関数を使って)

    エクセルで「A1~B20に祝日の一覧表があり、 同シートのD1~D28まで2/1~2/28の日付が入っています。 その右隣E列、●●にB3・▲▲にB4の祝日名を 関数を使って表示させたい」のです。 ・・A・・・ ・・B・・        1 1/1  元旦 2 1/8  成人の日 3 2/11  建国記念の日 4 2/12  振替休日 5   ・・D・・・ ・・E・・ 1  2/1 2  2/2 ・  ・ 9  2/9 10 2/10 11 2/11  ●● 12 2/12  ▲▲ 13 2/13 ご存知の方、教えてください。 よろしくお願いします。

  • カレンダーの祝日表示

    いつもお世話になっています。 最後の質問をさせてください。 A列に西暦入りの日付け B列に曜日 C列に祝日 M列(たて)に2100年までの西暦 3行目(よこ)に元旦、成人の日などの祝日名、祝日名の下に計算した祝日が2100年まで入っている祝日表を作りました C列にこの表を参照して祝日名を表示させる関数を教えてください。どうぞよろしくお願いします。 HLOOKUPでやったら一番上の2006年しか検索されませんでした。(涙)

  • エクセルで自動的に土日、祝日以外の日にちを表示させる方法

    いつもお世話になっております。以前ここで質問させていただきました。 一番頭の実行【C1】がうまくいかないので質問させていただきます。 わかる方いましたら教えてください。 実行したいことは以下のとおりです。 1.土日以外の【月~金】までを【C1~Y1】までに表示させる。 2.祝日は同一ファイルの【Sheet2】の日付を見て休日を表示させない。 3.【A1】には年/月を入力して【C1】に、たとえば【2007年7月】の頭から   土日、祝日以外の曜日から開始させたい。 現在私が実行している内容は、以下のとおりです。 1.【A1】に【2007】と入力。【A2】に【7】と表示させている。 2.【C1】に【=DATE($A$1,$A$2,1)】と入力。  【D1】に【=WORKDAY(C$1,1,Sheet2!A1:A1000)】以降【~Y1】まで繰り返している。 3.【C2】に【=C1】としセルの書式設定→ユーザ定義→aaaで曜日を表示させている。 この内容でうまくいかないのが【2007年7月】の場合なのですが 【C1】の頭が日曜日から開始になってしまいます。 これを月曜日の2日から開始になるようにしたいです。 【C1】の【=DATE($A$1,$A$2,1)】にSheet2!A1:A1000を追加すると変になるので そこらへんが良くわかりません。 当方あまりエクセルがわかりません。 以上よろしくお願いします。

  • エクセルマクロで別のシートを検索して表示

    エクセルのマクロで次の様な検索が出来るようにしたいのです。 シート1にあるセル(毎回同じセルとは限らない)に、 「出席者」という文字が入っています。 その直下のセルに名前(毎回違った名前)が入っています。 例 A5=出席者 A6=山田、田中、鈴木 この名前(例のシート1のA6)データをシート2の特定のセルに表示させたいのです。 シート2にボタンを配置してそれをクリックしたら表示できるという風に。(シート2の特定のセルは仮にB10とします) 出席者と名前は毎回同じ位置関係ですが、 表示されるセルは決まっていません。 このような作業をマクロで出来ますか? 出来るのでしたらそのマクロを教えて頂けますか? 初心者です、分かり易い回答をよろしくお願いいたします。

  • セルのデータをマクロでシート名に反映させる方法は?

    大変お世話になります。 Excelのセルに入力したデータをシート名に反映させたいのですが、 前回、QNo.3861407にて質問させてもらった時の回答は、 セルに入力するシートでしか反映されなかったのです。 それを、Sheet1に記載したデータをSheet2のシート名にも 反映させることは出来ますでしょうか? 下記式のActiveSheet.Name の部分をSheets(Sheet2).Select としてみたり、 色々調べて試してみたのですがうまくいきません。 前回にご回答頂いたマクロは下記の式です。 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$A$2" Then ActiveSheet.Name = Range("A2").Value & "年度休日" End Sub 上記式だと、 そのシート自体のA2に入力してエンターを押せば、 シート名も反映されて変わるのですが、 変更したいシートが2枚ある為、 その2枚を同時に変更する方法を知りたいのです。 詳しく説明すると、 勤怠表を作成する際、 別シートに休日カレンダーを作り、 勤怠表に休日が反映されるようにしているのですが、 休日カレンダーが正社員用と契約社員用の2枚あり、 その休日カレンダーの一方のシート(シート名「正 2007年度休日」)の A2に2007と入れたときに、 もう一方のシート(シート名「契 2007年度休日」)も一緒に 変更することは可能でしょうか? 契約社員用のほうは「正 ~」のA2をリンクさせて 「契 ~」のA2に2007と年数が入るようにしているので A2セルは「正 ~」のシートのA2の年数を 2007と書き換えると「契 ~」のシートのA2も変わるのですが、 上記のマクロだと、「契 2007年休日」のシート上のA2をダブルクリックして 再計算させないと、「契 ~」のシート名が変わりません。 これを、「正 ~」のシートのA2を書き換えた時点で 「契 ~」のシート名も変えることは出来ますでしょうか? 分かる方、お教え下さい。宜しくお願い致します。

  • エクセル表で祝日を表現する方法

    エクセルで1ヶ月分ずつの勤務表を作っていますが、 休日と土、日を分けて表示しましたが、祝日を休日と 同じ扱いで関数で表現する方法 ってあるんでしょうか? あったら教えてください。 できれば簡単な方法があればうれしいです。

  • エクセルのマクロについて

    QNo.3421130で質問させて頂いた件の続きなのですが 入力シート(1)のA1に入力された値を、シート2のB1に表示(つまりB列の同じ行数のセルに表示)するというマクロをお教え頂き、早速実践してみましたが、入力シートA1に入っている値が入力シートA10から算出された値(例:A11に日付の2007/10/18と入っていて、A10にはMONTH関数で10だけを抽出している。そのA10の値10をA1が参照している状態やIF関数で反映された値等)がシート2に表示されません。 また本マクロは入力シート(1)とシート2の同じ行列のセルの表示しか出来ませんが、たとえば入力シート(1)のA2セルの値をシート2のB4に表示(任意で表示位置を変更する方法、シート2の反映セルを下へずらす等)が分りません。 以下、お教え頂いたマクロです。 Private Sub Worksheet_Change(ByVal Target As Range)  If Target.Column = 1 Then    Sheets("Sheet2").Cells(Target.Row, "B").Value = Target.Value  End If End Sub 続きの質問であることと、説明が分りにくく大変申し訳ありません。 非常に困っております。よろしくお願いします。

  • 非表示シートのマクロ実行

    マクロ処理をさせたいAシートを非表示にしてBシートにマクロボタンを置いて実行させたいのですが 非表示にすると実行できません。 Aシートは 計算処理を行い Bシートには 値だけを出したいので BシートからAシートのマクロ処理を実行したいと思っています。 非表示にしても別シートから実行出来る方法を教えてください。

専門家に質問してみよう