- ベストアンサー
カレンダーの祝日表示
いつもお世話になっています。 最後の質問をさせてください。 A列に西暦入りの日付け B列に曜日 C列に祝日 M列(たて)に2100年までの西暦 3行目(よこ)に元旦、成人の日などの祝日名、祝日名の下に計算した祝日が2100年まで入っている祝日表を作りました C列にこの表を参照して祝日名を表示させる関数を教えてください。どうぞよろしくお願いします。 HLOOKUPでやったら一番上の2006年しか検索されませんでした。(涙)
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
mike_g です。 力づく(?)で考えてみました。 M N O P Q R S T U V W 1 祝日名 2006 2007 2008 2009 2010 2 元日 1/1 日 1/1 月 1/1 火 1/1 木 1/1 金 3 振替休日 1/2 月 4 成人の日 1/9 月 1/8 月 1/14 月 1/12 月 1/11 月 5 建国記念の日 2/11 土 2/11 日 2/11 月 2/11 水 2/11 木 6 振替休日 2/12 月 7 春分の日 3/21 火 3/21 水 3/21 金 3/21 土 3/21 日 8 振替休日 3/22 月 9 みどりの日 4/29 土 4/29 日 4/29 火 4/29 水 4/29 木 10 振替休日 4/30 月 11 憲法記念日 5/3 水 5/3 木 5/3 土 5/3 日 5/3 月 12 国民の休日 5/4 木 5/4 金 5/4 月 5/4 火 13 こどもの日 5/5 金 5/5 土 5/5 月 5/5 火 5/5 水 14 海の日 7/17 月 7/16 月 7/21 月 7/20 月 7/19 月 15 敬老の日 9/18 月 9/17 月 9/15 月 9/21 月 9/20 月 16 国民の休日 9/22 火 17 秋分の日 9/23 土 9/23 日 9/23 火 9/23 水 9/23 木 18 振替休日 9/24 月 19 体育の日 10/9 月 10/8 月 10/13 月 10/12 月 10/14 木 20 文化の日 11/3 金 11/3 土 11/3 月 11/3 火 11/3 水 21 勤労感謝の日 11/23 木 11/23 金 11/23 日 11/23 月 11/23 火 22 振替休日 11/24 月 23 天皇誕生日 12/23 土 12/23 日 12/23 火 12/23 水 12/23 木 24 振替休日 12/24 月 1.上に示すのが“力づく”休日表。N列の 1/1、1/2 等の日付は文字列で 入力 2.[ユーザー定義]で aaa に書式設定したセル O2 に式 =(N$1&"/"&N2)*1 を入力して、此れを下方にズズーッと複写。P列以右も同様 3.下表において、[ユーザー定義]で aaa に書式設定したセル B2 に式 =A2 を入力 4.セル C2 に次式を入力 =IF(ISERROR(OFFSET($M$2,MATCH(A2,OFFSET($M$2,0,MATCH(YEAR(A2),years,0),16,1),0)-1,0,1,1)),"",OFFSET($M$2,MATCH(A2,OFFSET($M$2,0,MATCH(YEAR(A2),years,0),16,1),0)-1,0,1,1)) 5.範囲 B2:C2 を下方にズズーッと複写 A B C 1 年月日 曜 祝日名 2 2006/01/01 日 元日 3 2006/01/02 月 振替休日 4 2006/01/03 火 - ---------- -- 9 2006/01/08 日 10 2006/01/09 月 成人の日 11 2006/01/10 火 -- ---------- -- 42 2006/02/10 金 43 2006/02/11 土 建国記念の日 44 2006/02/12 日 -- ---------- --
その他の回答 (5)
(たびたび 済みません) No.4 における OFFSET関数中の years は、範囲 M1:W1 に付けた名前です。
お礼
ありがとうございました!
No.4 における OFFSET関数中の引数 16 は 30 くらいに変更願います。
お礼
ありがとうございました☆
「祝日表」のイメージが沸かないので、もっと具体的に説明して欲しいです。 次のような縦型祝日表ではだめですか? 年月日 祝日名 2006/01/01 元日 2006/01/09 成人の日 2006/02/11 建国記念の日 2006/03/21 春分の日 2006/04/29 みどりの日 2006/05/03 憲法記念日 2006/05/04 国民の休日 2006/05/05 こどもの日 2006/07/17 海の日 2006/09/18 敬老の日 2006/09/23 秋分の日 2006/10/09 体育の日 2006/11/03 文化の日 2006/11/23 勤労感謝の日 2006/12/23 天皇誕生日 2007/01/01 元日 ----/--/-- ----- 2010/12/23 天皇誕生日 どうしても横型祝日表にしたいのなら次のように出来ませんか? 年月日 2006/01/01 2006/01/09 2006/02/11 … 祝日名 元日 成人の日 建国記念の日 …
補足
アドバイスありがとうございます。このカレンダーを作るときに10年分の話だったので↑のように10年分縦型の表を作ってVLOOKUPで反映?させたら上司からNGが出てしまったんです。(涙)こんなダラダラ書いて!みたいな(汗)なので2100年まで延長になり、いろいろな方法で作ったのですがどれもNGで上司の理想はA列に西暦入り(別セルNG)の日にち、B列に曜日、F列に1月からの祝日日(計算式で)、G列に祝日名を1年分いれてC列にそれをまわす数式を入れるっていうんですが、西暦が邪魔してどうしてもできずにいたら「じゃー表を作りなさい」ってなり現在にいたります。 元旦 振替休日 成人の日 建国記念日 ・・・ 2006 2006/1/1 2006/1/2 2006/1/9 2006/2/11 ・・・ 2007 2007/1/1 2007/1/8
- mshr1962
- ベストアンサー率39% (7417/18945)
#1のmshr1962です。 すみません閉じ括弧とカンマ一つ抜けてました。 =LOOKUP(A1,OFFSET($N$4,MATCH(YEAR(A1),$M$4:$M$100),,,25),$N$3:$AL$3) OFFSET(基準,行の移動値,列の移動値,高さ,幅)です。 ですので最後の,,,25は「,列移動無し,高さ1行,幅25列」の意味 これでその年の祝日の行を比較対象にしています。 MATCH関数の方は MATCH(YEAR(A1),$M$4:$M$100) 最後の引数は省略ですね。 これでその年のある行を抽出できます。 今年の場合は =LOOKUP(A1,$N$4:$AL$4,$N$3:$AL$3) という式を使ったのと同じになります。
お礼
お返事おそくなりました。すみません。詳しいご解説ありがとうございました!わかりやすく説明していただいて初心者の私でも理解でき「お~!!」ってなりました!!でも数式を入れると#N/Aって出てしまいます(涙)日にちはA4から始まっているのでいただいた数式をA1からA4に変えOFFSETの幅25列を26列(会社の創立記念日で1日祝日が増)に変えました。
- mshr1962
- ベストアンサー率39% (7417/18945)
N3=成人の日 O3=建国記念日 M4=2006 N4=2006/1/9 O4=2006/2/11 M5=2007 N5=2007/1/10 O5=2007/2/11 とかなってるのでしょうか? =LOOKUP(A1,OFFSET($N$4,MATCH(YEAR(A1),$M$4:$M$100,,25),$N$3:$AL$3) みたいに年によって比較する行を変えるように数式を組まないと駄目ですね。
お礼
早速のお返事ありがとうございます。 OFFSETは愛用?の関数辞典サイトに載っていなかったので勉強になります。 質問なのですがMATCH関数の最後の ~,,25)の25はどんな意味があるのですか?本には-1~1しかなく調べたのですがわかりませんでした。あと,,は2つありますがこれの意味も教えてください。お手数かけますがよろしくお願いします
お礼
ありがとうございました!今日1日参考にしながら完成してOKがでました~☆うれしいです。顔も知らない人のためにこんなによくしてもらって1ヶ月カレンダーに悩まされてたのがおかげさまで今日で開放です!!!本当にありがとうございました。本当に感謝です!!! いままでアドバイスくれた方々もありがとうございました。