- ベストアンサー
エクセルで記念日を自動入力したい
お世話になります。エクセルの関数のことでお知恵をお貸し下さい。 日付の部分は、書式設定で「日付」に設定してあり、 A1のセルに日付(「2007.10.15」と入力、表示は「2007年10月15日」) が入力してます。 別のシート「記念日」に A列(日付・入力は同じで表示は「10月15日」)| B列(文字列) 10月15日 |花子誕生日 のように入力してあります。(実際は1年分の日付と文字列です) 記念日は毎年同じですので、元のシートのA1が何年であろうとも、 「月日」の部分だけの一致で「記念日」のシートのA列を調べ、 一致すればB列の文字列(上の例では「花子誕生日」)を出したいのです。 関数でそのように設定するには、どうすればよろしいでしょうか? 判りにくい説明でしたらすみません。その場合どのようにお伝えすれば よいかご指摘いただけましたら幸いです。 よろしくお願い申し上げます。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
一例です。 ■記念日シートをシート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) 因みに重複月日は考慮していません。
その他の回答 (2)
- dogsiva
- ベストアンサー率32% (92/279)
「私だったらこうする」程度の参考意見です。 まず、「記念日」シートを月別に分けます 例えば、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)」 このように入力します。 もっと上手な方法がありそうですが・・・。
お礼
ご回答ありがとうございます。 なるほど、そういうやり方もあるんですね~!勉強になりました。 今回は回答No.2のbu-fu-u様のご回答を拝借しましたが、 別の用件で困ったとき、参考にさせて頂きたいと思います。 いろいろな角度から考えて頂いて、感謝の気持ちでいっぱいです。 ありがとうございました。
- bu-fu-u
- ベストアンサー率28% (2/7)
とりあえず思いついた方法を記載します。 (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関数は指定した文字列を全て繋げていって文字列を作る関数です。 ほかにもっといい方法があるとは思いますが、参考までに。。。。
お礼
早々とご回答ありがとうございました! 今回は回答No2のmu2011様のご回答内容を拝借することにしたのですが、 bu-fu-u様のご回答も大変参考になり、今後似たような例で使わせて頂きたいと思います。 記念日シートの日付は「文字列」で良かったんですね・・・。 元の日付が「日付」なので合わせないとダメと思っており、手間をかけて余計ややこしくしていました・・・(笑)。 すごく勉強になりました。 こんなに早く回答が頂けると思っていなかったので、感激です。 ありがとうございました。
お礼
大変ありがとうございました!記念日の方を文字列にする、後者の方を 拝借させていただきました。 早速試してみたところ、思い描いていた通りに作動しました~! 元のシートが日付なので記念日の方も日付でないと・・・と思いこんで、 変にややこしくしてしまった質問内容でしたのに、シンプルにした式まで 教えていただいて、大変助かりました。感激です。 本当にありがとうございました~!!