• ベストアンサー

エクセルで記念日にメッセージを表示させたい

お世話になります。 エクセル2003を利用しています。 シートのあるセルに=TODAY() で今日の日付と書式設定をつかって曜日も表示させています。 (平成21年12月4日(金)という表示です。) 特定の日(例えば誕生日)がきたらその隣のセルに「誕生日おめでとう」のような メッセージを表示させることは関数で可能でしょうか? 誕生日だけではなく他の記念日等もメッセージを表示させたいので、同じシート内で表を作ってと考えています。 どう質問して良いか検討もつきませんが、どなたかアドバイスいただけると非常に助かります。

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

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

こんばんは! すでに回答は出ていて重複するかと思いますが・・・ 一例です。 ↓の画像のように別表にコメントの表を作成しておきます。 そして、入力セルに =TODAY() となっているということはシリアル値だと思いますので、 月日のみで参照するようにしてみました。 別表に1列作業用の列を使わせてもらっています。 F2セルに =MONTH(D2)&DAY(D2) という数式を入れ、オートフィルで下へコピーします。 そして、コメントを表示させたいセルB2セルに =IF(COUNTIF(F2:F4,MONTH(A2)&DAY(A2)),INDEX(E2:E4,MATCH(MONTH(A2)&DAY(A2),F2:F4,0)),"") という数式が入っています。 (エラー処理はしていません) 以上、参考になれば幸いです。m(__)m

s-mackey
質問者

お礼

回答ありがとうございます。 大変参考になりました。画像までつけていただいて。 思うようなものができました。ありがとうございました。

その他の回答 (5)

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

何処かの2列に 例データ 記念日の表(日と名称)を作る E列    F列 2009/8/2 会社創立日 2009/3/2 誕生日 2009/4/2 県民の日 2009/12/4 ボーナス支給 ・・ ただしE列は、上記のように日付を入れるのでなく、=DATE(YEAR(TODAY()),8,2) のような入れ方をする。 来年になって、年を変えなくて良いように。 1回限りのものはストレートに、年+月+日の日付を入れる。 A1に =TODAY() B1に =VLOOKUP(A1,$E$2:$F$100,2,FALSE) と入れる。 上記の表の場合は、今日(質問日には)は「ボーナス支給」と出る。 === 欠点は1日1イベントしか探さないこと。 複数を探すには、少し他の工夫が要る。 Googleで「imogasi方式」で照会のこと。 日を指定して、検索して複数行を抜き出すことを関数でやることになる。

s-mackey
質問者

お礼

回答ありがとうございました。 今回はNO.4様の回答を参考にさせていただきましたが VLOOKUP関数でもいけるのではないか?と思っていたので次回試させていただきたいと思います。 ありがとうございました。

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

No.4です! たびたびごめんなさい。 前回の回答では 仮に 1/24 や 12/4 など同じ数値の並びがある場合は正確なデータが得られないと思いますので、 作業列のF2セルを =MONTH(D2)*100+DAY(D2) B2セルを =IF(COUNTIF(F2:F4,MONTH(A2)*100+DAY(A2)),INDEX(E2:E4,MATCH(MONTH(A2)*100+DAY(A2),F2:F4,0))) に訂正してください。 どうも何度も失礼しました。m(__)m

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.3

左側に日付、その右側に誕生日などの記念項目を入力したrリストがK列とL列に設定してあるなら、以下の式でその日が記念日のとき、その記念事項が表示されます。 =IF(COUNTIF($K:$K,TODAY()),VLOOKUP(TODAY(),$K:$L,2,0),"") ただし、記念日の日付が来年になる場合は、2010/2/3のように来年の日付を入力してください。 ちなみに、上記の回答は数式を簡略化したために、上記のような制限が付きますが、少し煩雑な数式にすれば、今年の日付を入力しておくだけで何年後でも記念日を表示させることもできます。

s-mackey
質問者

お礼

回答ありがとうございました。 参考にさせていただきます。

noname#99913
noname#99913
回答No.2

A1に今日の日付があるとして、誕生日が12月4日の場合、 =IF(AND(MONTH(A1)=12,DAY(A1)=4),"誕生日おめでとう","")

s-mackey
質問者

お礼

回答ありがとうございました。 参考にさせていただきます。

  • nattocurry
  • ベストアンサー率31% (587/1853)
回答No.1

TODAY関数を使えるくらいなら、IF関数で記念日と今日の日付を比較して、同じだったらメッセージを表示する、という計算式も作れると思いますが・・・ たくさんある記念日リストの中のどれかと一致したら、という条件の書き方が解らないのであれば、やり方はいろいろあるとは思いますが、MATCH関数を使うのも一つの手ですね。

s-mackey
質問者

お礼

回答ありがとうございます。 自分が勉強不足で、関数をなるべく簡素にまとめたいと思い質問させていただきました。 またよろしくお願いします。

関連するQ&A

  • エクセルで記念日を自動入力したい

    お世話になります。エクセルの関数のことでお知恵をお貸し下さい。 日付の部分は、書式設定で「日付」に設定してあり、 A1のセルに日付(「2007.10.15」と入力、表示は「2007年10月15日」) が入力してます。 別のシート「記念日」に A列(日付・入力は同じで表示は「10月15日」)| B列(文字列) 10月15日                  |花子誕生日 のように入力してあります。(実際は1年分の日付と文字列です) 記念日は毎年同じですので、元のシートのA1が何年であろうとも、 「月日」の部分だけの一致で「記念日」のシートのA列を調べ、 一致すればB列の文字列(上の例では「花子誕生日」)を出したいのです。 関数でそのように設定するには、どうすればよろしいでしょうか? 判りにくい説明でしたらすみません。その場合どのようにお伝えすれば よいかご指摘いただけましたら幸いです。 よろしくお願い申し上げます。

  • エクセル こんなことしたいです

    イメージ 日記帳を作ります! 1つのBookに、1ヶ月分を入力します 1つのシートで1日分です ★セルA1に日付入力(例:4/21と入力する ⇒ 19年4月21日)と自動表示される ※セルの書式設定をいちいちするのは面倒です!  他のシートに書式コピーするのも面倒です!   ★セルA1に日付を入力 ⇒ シート見出しに自動的に、その月日が表示される ※シート見出しを右クリックして、いちいち名前の変更など面倒です! ★セルA1に日付入力 ⇒ それに対応する曜日を隣セルに自動表示 ★シート1の設定そのままで、シートを30枚一気に作成 ※Shift⇒F11では、完全に新しいシートができてしまいますよね。それに30回繰り返さないといけないですし・・・ ※シートの移動、コピーでも30回繰り返さないといけない・・・ 面倒です!! ★できればできあがった30枚のシートには、自動的に日付も曜日も シート名も出来上がっている ※例:シート1が5月1日で、フォーマット(テンプレート?)作成すると、自動的にシートが30枚できて、それぞれセルA1に日付(例: 5月5日)それに対する曜日が表示されている ★土曜は曜日が自動的に青になっている  日曜は赤になっている いろいろやかましいですが・・・お知恵(知識)お貸しください!! よろしくお願いいたします! よろしくお願いします!  

  • エクセル2000:「半角数字で年/月/日と入力する」と表示され、入力できない

    会社で使用しているエクセルの書式があるのですが、日付が入っているセルに「=TODAY()」が入っていました。 自動的に今日の日付が入るわけですが、日付を入れたくなかったので、「=TODAY()」を消し、「平成  年  月  日」と入力すると、ダイアログが表示され、「半角数字で年/月/日と入力する。」と表示されます。 ここから困っているのですが、表示形式を日付から標準や文字列等に変えても、同じダイアログが出ます。入力する文字は、数字・アルファベット・ひらがな・漢字のどれを入力しても、全角・半角のどちらを入力してもダメでした。 半角で「2007/1/1」と入力してもダメです(泣) IFやSUM関数を入れても表示されないのですが、TODAYだけ、入力が出来ました。 私が作った書式ではないため、何が問題なのかさっぱり分かりません。 ちなみに、その書式にはマクロが入っています。(印刷の設定をマクロでしているようなのですが、書いてあることはよく分かりません。)これを無効にしても、ダメでした。 長くなり申し訳ありません。 「=TODAY()」しか入力を受け付けないのはどうしてなのでしょうか? どうすれば、通常の入力ができるのでしょうか? ご存知の方、よろしくお願いします。

  • エクセル日付関数について

     日付関数の初歩的な質問です。  例えばtoday()で、セル書式が日付なら2009/1/4となります。セルの書式を標準にすればシリアル値がでます。そこでyear(today())とし書式が日付なら2009となると思ったのですが、結果は1905/7/1となりました。どういうことなのでしょうか。セル書式を標準にしたら2009となりました。  的はずれの質問かもしれませんが、なぜyear(today())とうつと1905/7/1となるのでしょうか。  

  • エクセルで各シートに日付・曜日一括表示するには

    (1)エクセルで7月31日分のシートをつくり、今年のカレンダーどおりの日付・曜日を(各シートのA1セルに、いちいち入力するのではなく)一括で各シートのA1セルに表示できる方法があれば、教えて下さい。 (2)エクセルで昨年7月の平日の数だけシートがあるファイルがあります。各シートのA1セルには、「平成19年7月○日(○曜日)」と入力されています。 このファイルを、今年の7月の平日カレンダーに一括置換するには、どうすればいいでしょうか? 昨年と今年は平日の日付はもちろん、同じ日でも曜日が違いますので、各シートを開き、いちいち日付・曜日を直さなければいけないのでしょうか。教えて下さい。宜しくお願いします。

  • あるセルにデータが入力された日を表示

    A列(A1)のセルにデータが入った場合、D列(D1)にそのセルに データが入力された日付を表示させたいのですが、どのように やったらいいでしょうか?TODAY関数を使うと毎回更新されて しまいます。 TEXT関数+TODAY関数で出来るかな?と思ったのですが、 =TODAY()を使うとセルに入力された日でなくて、ファイルを開いた 日付に毎回更新されてしまいます。 A列のセルにデータが入った時にD列にその入力日を表示させたい のです。こういう事は簡単に関数を使って出来ませんか?わかる方 がいれば教えてください。

  • エクセル 表示形式について

    先程も実は質問させていただいたのですが、似たような質問を再度させてください。 日付    曜日 2006/4/1    土 とします。 日付は表示形式で「d」にしました。 曜日は「=A1(2006/4/1のセル)」のようにして、更に「aaa」の表示形式を付けました。 そこで、また今度は条件書式を付けたいのです。 「aaa」と掛けた月火水木・・・に「日」は赤にするという条件書式をつけたいのです。 条件はどのようになるのでしょう。 曜日を文字列で入れていたときには 「セルの値が次の値に等しいときに赤にする」のようにして、書式を赤字に設定していました。 でも曜日をaaaと表示形式かけた時にはどうなるんですか。数式は「=A1」とかですし。。。 どなたか教えてください!><

  • excel if関数について

    教えて下さい。 今書式を作っていますが、空白の場合表示しない方法がわかりません。 If関数を使えば良いとは分かるのですが、関数の組み合わせかたが間違っているらしく、どうしてもエラーになってしまいます。 作りたい関数は 例 A1 today A2 個人名 A3 誕生日 A4 年齢 というものです。 この時A4セルに誕生日の関数を入れ、もしA3セルが空白ならA4セルも空白にする。 という書式を作りたいと思います。 どんな関数を入れれば良いのかご教示願います!

  • エクセル 誕生日 日付の表示を変えたい

    平成26年7月30日生まれの人のデータを、2014/7/30 と入れてセルの書式を日付→和暦に直したら平成26年7月30日と表示できたのはいいんですが、平成26年7月30日生 と表示したいのです。どのようにしたらよいでしょうか。ちなみに 2014/7/30&"生" では文字としてそのまま表示されてしまって困っています。 簡単なことでしょうが、エクセル初心者ですのでよろしくお願いします。 

  • エクセル2010 ユーザー定義の書式で表示したい

     新年、明けましておめでとうございます。    年明け早々にお世話になります。  "'"yy"年"mm"月"dd"日" の書式の西暦の日付に続けて、スペースなしでシート名を表示したいので、  お分かりになる方、ご教示よろしくお願いします。  例えば、日付が2014年1月2日(編集当日の日付ではありません)でシート名がABCDなら、  2014/01/02 のみの入力値に対して   '14年1月2日ABCD  をD6セルに表示させたいです。  現時点で、  =RIGHT(CELL("filename",A2),LEN(CELL("filename",A2))-FIND("]",CELL("filename",A2)))  を特定の書式を設定していないD8セルに入力して、D8セルにシート名の表示はできていますが、  日付を表示させようとして、ユーザー定義の書式でロックされていないD6セルに  'yy"年"mm"月"dd"日" を設定し、2014/01/02 を入力したところ、# が表示されて、  頓挫しています。  本来なら、D6セルに日付とシート名を表示させたいのですが、  D6セル、D8セルのいずれも  ユーザー定義の書式だと期待した表示結果が得られない状態です。  何故、日付表示さえうまく行かないのか、この点も解説頂けたら有難いです。  年明け早々にお手数で恐縮ですが、よろしくお願いします。

専門家に質問してみよう