• ベストアンサー

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

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

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

  • ベストアンサー
  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.2

一例です。 ■記念日シートをシート2としています。(行数は9行ですので調整して下さい) =INDEX(Sheet2!B:B,SUMPRODUCT((MONTH(Sheet2!$A$1:$A$9)=MONTH(A1))*(DAY(Sheet2!$A$1:$A$9)=DAY(A1)))*ROW(Sheet2!$A$1:$A$9)) ■記念日シートの日付を文字列で設定されると次の方法が考えられ、数式が簡単になりますが如何でしょうか。 =VLOOKUP(MONTH(A1)&"月"&DAY(A1)&"日",sheet2!A:B,2,FALSE) 因みに重複月日は考慮していません。

tomirocky4
質問者

お礼

大変ありがとうございました!記念日の方を文字列にする、後者の方を 拝借させていただきました。 早速試してみたところ、思い描いていた通りに作動しました~! 元のシートが日付なので記念日の方も日付でないと・・・と思いこんで、 変にややこしくしてしまった質問内容でしたのに、シンプルにした式まで 教えていただいて、大変助かりました。感激です。 本当にありがとうございました~!!

その他の回答 (2)

  • dogsiva
  • ベストアンサー率32% (92/279)
回答No.3

「私だったらこうする」程度の参考意見です。 まず、「記念日」シートを月別に分けます 例えば、1月をA列とB列、2月をC列とD列のようにして、 奇数列(A列、C列、E列・・・)に「日」の数字 偶数列に文字(花子誕生日、等)を入力します。 そして、「日付」シートには A列に日付、 B列に関数 「=vlookup(day(a1),choose(month(a1),a:b,c:d,e:f,g:h,i:j,k:l,m:n,o:p,q:s,t:u,v:w,x:y),2,false)」 このように入力します。 そして B列を非表示にし、 C列に「=if(iserror(b1),"",b1)」 このように入力します。 もっと上手な方法がありそうですが・・・。

tomirocky4
質問者

お礼

ご回答ありがとうございます。 なるほど、そういうやり方もあるんですね~!勉強になりました。 今回は回答No.2のbu-fu-u様のご回答を拝借しましたが、 別の用件で困ったとき、参考にさせて頂きたいと思います。 いろいろな角度から考えて頂いて、感謝の気持ちでいっぱいです。 ありがとうございました。

  • bu-fu-u
  • ベストアンサー率28% (2/7)
回答No.1

とりあえず思いついた方法を記載します。 (1)記念日シートの日付を文字に変更してもいいのなら「'10/15」と前に「’」を入れて入力し日付のシリアル値ではなく文字としての10/15に変更する。(他の記念日も同じく) (2)日付が入っているシートで B列に 「=VLOOKUP(CONCATENATE(MONTH(A3),"/",DAY(A3)),記念日!A:B,2,FALSE)」と計算式を入れる。 (日付シートの月と日付を文字形式にして、それで記念日シートを検索する。※A3となっているところは列に合わせて変更してください。) っていうのはどうでしょうか? 尚、(1)で日付の部分の入力が結構あって変更するのが面倒だというのであれば、こちらも文字列にするために、誕生日とか文字が入力されている列の前に1列追加し、その列に「=CONCATENATE(MONTH(A3),"/",DAY(A3)」の計算式を入れて、ただの10/15という文字に変換し、この列を使ってのVLOOKUP関数にするのもアリだと思います。 ※CONCATENATE関数は指定した文字列を全て繋げていって文字列を作る関数です。 ほかにもっといい方法があるとは思いますが、参考までに。。。。

tomirocky4
質問者

お礼

早々とご回答ありがとうございました! 今回は回答No2のmu2011様のご回答内容を拝借することにしたのですが、 bu-fu-u様のご回答も大変参考になり、今後似たような例で使わせて頂きたいと思います。 記念日シートの日付は「文字列」で良かったんですね・・・。 元の日付が「日付」なので合わせないとダメと思っており、手間をかけて余計ややこしくしていました・・・(笑)。 すごく勉強になりました。 こんなに早く回答が頂けると思っていなかったので、感激です。 ありがとうございました。

関連するQ&A

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

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

  • エクセル

    シート1~5まであります。別に情報シートを作成しています それぞれ同じ原本から作成しています 全部のシートにA1~A10のセルに日付、B1~B10のセルに文字など入力がするところがあります 入力はA1から順番に入れていきます 例えば 保存ボタンを作成しておく シート1のA1に日付、B1に”文字”を入力し、保存ボタンをおす 情報シートに日付と内容が一致する情報がなければ、 情報シートのA列にシート名、B列に日付、C列に入力した内容が 空白のところに出力される こんな感じに作成できないでしょうか?

  • エクセル シート自動作成

    A1に2016年、B1に8月などと入力した時 A2~A15に日付を自動出力 B2~B15に曜日を自動出力 C2~C15に文字列&日付で自動表示するファイルを作成しました A1 2016年 B2 8月 A列  B列  C列 1日 月曜日 名前8月1日 2日 火曜日 名前8月2日 3日 水曜日 名前8月3日 ・ ・ C列のC2~C15の名前でシートを自動的に作成出るようにしたいのですが たとえばボタンを作成しボタンを押したときにシートが自動的に作成される または年と月を入れた際に自動的にシート作成されるようにしたいのですが さらにシートは原本を作っているのでそれをもとにコピーされるように したいのですが? どうすればいいでしょうか? お手数ですが宜しくお願いします。

  • エクセルの関数について

    DATE関数について教えてください。 エクセルで、シート1のA1セルにTODAY関数で本日の日付が入るようにセットし、 A2にVLOOKでシート2よりコメントを引き込むように設定しています。 シート2はA列に1月1日から12月31日まで順に並べ、B列にコメントを入れた 表になっています。 ここで質問なのですが、A1やシート2の日付はすべて2008年が入ってしまい、 A1セルが2009年になってしまうと、シート2から引き込まなくなってしまいます。 これを回避するために、A1とシート2ともに年を省き 月日のみで永続的に引き込みが出来るようにしたいのですが、 DATE関数などを利用して可能でしょうか? よろしくお願いします。

  • エクセルの「&関数」で日付の結合について

    すみませんが、できればとっても嬉しいのですが・・・・ たとえば、A列に下記のように日付が入っているとし、「&」を利用してB1に関数で「="誕生日は"&B3&"です"」と入力し、「誕生日は平成19年8月6日です」表示させようとすると、「誕生日は39300です」と表示されてしまいます。 これの解決方法はあるのでしょうか?? よろしくお願いします。 ____A列_______B列____ 1 平成19年8月6日 2

  • エクセルの関数を教えてください。

    シート2のA2には、H23年12月と日付データがあります。 ここはTODAY関数でしていますが、ときに、手動で過去の月を指定する時があります。 C5には"現金"と入力されています。 現金シートのN1からY1までは、1月、2月・・と共通になっています。 N2からY2までは金額が入っています。 B5以下に入れる関数を教えていただきたいのですが、 B5には、現金シートで、シート2のA2と同じ月をN1からY1まで探し出し、一致する月の2行目の金額を表示する関数を教えていただきたいのです。 また、現金シートのN2からY2まで入れる関数についても教えていただきたいのです。 現金シートのB列には日付データがあります。 G列H列には金額データがあります。 1月分すべてのG列の金額をたして、H列のすべての金額を足したものを引くという関数を教えていただきたいです。 お手数をかけますがよろしくご教授くださいませ。

  • エクセルで日付セルの参照先が空白の場合の書式設定

    エクセル2016です。 例えばシート1のA列に日付を入れる表があって、そのA列のセルを参照してシート2の$B$2に同じ日付が入る表があります。 このA列への日付の入力を忘れがちなのでシート1のA列が空白セルの場合(=シート2のB2セルが1900年1月1日となる)はセルを赤色にしたいのですが。 書式設定で、セルが「1900年1月1日」の時、としてもうまくいかないのですが。 シート2のB2はOFFSET関数でA列の値を引っ張るので、A1=""では書式が設定できませんのでよろしくお願します。

  • エクセル自動で先月分の途中までの総額の出し方

    エクセル2010を使ってます。 店舗の売り上げ管理をしているものです。 例えば今日が5月27日だとして先月分の4月1日から4月27日までの売り上げの総額と5月1日から今日(5月27日)までの売り上げを比べたいのですが、4月のシートには4月1日から30日までのデータが入力されています。 わからないのが4月の末日までの総額じゃなくて途中の日付までの総額の出し方を知りたいです。 Aの列が日付の列、Bの列が売り上げの列だとします。 5月分は明日以降の分のデータが入力されていないので単純にSUMで出せばわかるのですが、 4月は途中の総額なのでわかりません。 今日の日付はTODAY関数を使って出して、セルの書式設定で日付だけを表示させて何かできないでしょうか? ちなみに4月と5月は同じブックですがシートは別です。 教えてください。

  • Excelの関数を教えてください

    初めまして。よろしくお願いします。 関数を使って、以下のようなデータを作成することができれば、 その関数を教えてください。 Sheet1には次のように入力されています   A       B 1 日付      金額 2 2010/1/1 500 3 2010/2/5  300 4 2010/1/23 10000 5 2010/2/1  200 ・ ・ ・ A列に日付、B列に金額が入力されていて、行は決まっていません。 これをSheet2に集計したいのですが、B2~B13に関数を使ってできますか? Sheet2   A     B 1 月    金額 2 1月 3 2月 4 3月 ・ ・ ・ 13 12月 14 合計 Excelがわからなくてこまっています。詳しい方、ぜひ教えてください。 よろしくお願いします。

  • Excelの日付の入力について

    A列のセルにずらっと 2011/11/29といった感じで日付の入力をしています。 セルの書式設定で 2011年11月29日 と表示されるようにしています。 これらのデータを表示されている通り B列に貼り付けをすることは可能でしょうか? 貼り付けをしてB列のセルの書式設定で 表示方法の選択をすればいいのすが それでは見せ方を変えているだけなので 出来れば 2011/11/29を 2011年11月29日という文字列のデータにして 貼り付けという作業がしたいです。 詳しい方、お願いします。

専門家に質問してみよう