- ベストアンサー
エクセル2003で誕生日カレンダーを作成する方法
- エクセル2003で誕生日に該当する人の名前が表示されるカレンダーを作成する方法について教えてください。
- A1セルに2010/1/1を入力し、IF関数とWEEKDAY関数を組み合わせてカレンダーを作成しますが、別シートのデータを参照する方法も知りたいです。
- エクセル初心者ですが、ネットで調べながらカレンダーを作成しました。別シートのデータも参照したいので、関数の使い方を教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
またまた・・・お邪魔します。 誕生日のリストはシリアル値が理想なのですが、 年が入っていないということみたいですね? もしかして文字列になっているのでしょうか? もしそうであればもう一度画像をアップしたように誕生日を生年月日のシリアル値にします。 そして、隣の列に作業用の列を作りそれを参照するという方法はどうでしょうか? (カレンダーの表は前回投稿したそのままを利用させてもらいます) 作業列K2セルに =DATE($A$1,MONTH(J2),DAY(J2)) という数式を入れ、オートフィルで下へコピーします。 K列が目障りであれば、フォントの色を白にするか、数式をオートフィルした後に非表示にしても良いかと思います。 これで今年の各自の誕生日のシリアル値になりますので、これを参照します。 前回のA6セルの数式を =IF(A5="","",IF(COUNTIF($K$2:$K$9,A5),INDEX($I$2:$I$9,MATCH(A5,$K$2:$K$9,0))&"誕生日","")) にします。 その後の操作は前回同様に、A5・A6セルを範囲指定しオートフィルで行・列方向へコピーです。 これで何とか希望に近い形にならないでしょうか? 尚、難点が一つあります。 もし、誕生日が同じ人が複数いた場合は一番上の行の人を拾い出しますので、 下の行の人は無視されます。 その場合は別の方法を考えないといけなくなりますが、 今、パッ!っとその方法は思い浮かびません。 どうも長々と失礼しました。m(__)m
その他の回答 (2)
- tom04
- ベストアンサー率49% (2537/5117)
No.1です! たびたびごめんなさい。 前回の数式でA6セルの数式を少し訂正してください。 (実は数年分の祝日データを参照する数式にしていました) 誕生日データ(祝日データ)は表ではI1~J24セルに入っています。 A6セルの数式は =IF(A5="","",IF(COUNTIF($J$2:$J$22,A5),INDEX($I$2:$I$24,MATCH(A5,$J$2:$J$22,0)),"")) となります。 どうも何度も失礼しました。m(__)m
お礼
tom04さん、とても丁寧な回答をありがとうございます! すごいですね、数式を組み立てられて・・ うらやましい限りです。私もはやくそこまでたどりつきたいものです。 祝日と同じようにやればいいんですね、参考になりました! ただ呼び出すデータは、年月日を照らし合わせて同じものを 導き出してくれるわけですよね・・ 誕生日のデータリストには年が入っていないので エラーになってしまったりはしませんか? もしそれをするなら、データに2010と入れるべきでしょうか・・
- tom04
- ベストアンサー率49% (2537/5117)
こんにちは! 一例です。 ↓の画像のように1行おきに日付が入るようにして、日付の下のセルに 「○○さんの誕生日」と表示させる方法はどうでしょうか? その場合数式を少し変更する必要があります。 今使われている数式を =IF(MONTH($A$1)<>MONTH($A$1-WEEKDAY($A$1)+COLUMN(F1)+7*((ROW(F1)+1)/2-1)),"",$A$1-WEEKDAY($A$1)+COLUMN(F1)+7*((ROW(F1)+1)/2-1)) にすればたぶん1行おきに希望の日付表示ができると思います。 それを↓の画像でいうとA5セルに入力します。 そして誕生日のデータを別表にしておきます。 (画像の場合は祝日データにしていますが、方法は同様だと思います) A5セルに =IF(A5="","",IF(COUNTIF($J$2:$J$24,A5),INDEX($I$2:$I$24,MATCH(A5,OFFSET($I$2:$I$24,,MATCH($A$1,$J$1:$J$1,0),,1),0)),"")) という数式を入れています。 そして、A5・A6セルを範囲指定して、2行ずつオートフィルで下へコピーします。 最後にA5~A16セルを範囲指定し、オートフィルで列方向へ土曜日までコピーすると 画像のような感じになります。 これで別表に一致する日には画像のように表示されるはずです。 尚、余計なお世話かもしれませんが、 万一最初に変更した数式がエラーになっていは失礼なので、 ↓の画像のA5セルの数式は =IF(MONTH($C$1-WEEKDAY($C$1)+COLUMN(A1)+7*((ROW(A1)+1)/2-1))=$A$2,$C$1-WEEKDAY($C$1)+COLUMN(A1)+7*((ROW(A1)+1)/2-1),"") として、セルの書式設定の表示形式からユーザー定義で d としています。 (A1セルは年を入力・A2セルは月を入力・C1セルは =DATE(A1,A2,1) としています) 以上、長々と書きましたが 参考になれば幸いです。 他に良い方法があれば読み流してくださいね。m(__)m
お礼
またまたご丁寧にありがとうございます!!! なんとかtom04さんのアドバイスを見つつ計算式いれつつ ネットでもちょこっと調べつつ おかげで完成させることができました・・ 完成画像をのせたかったのですが、 もうどうやらアップできないようで・・ かぶった人も出力できるようには、なんとか自分で解決策を 探したいと思います! 丁寧に、しかも何度も本当にありがとうございます!!