- ベストアンサー
関数を教えてください。
下記のような表があります。 A B ~さん ○月○日生 ~くん ○月○日生 ~くん ○月○日生 ~さん ○月○日生 ~さん ○月○日生 本日、誕生日の人の名前を自動的に他のセルに表示させるにはどのようにしたらよいのでしょうか おねがいいたします。 なを、同じ誕生日の人が2名以上いたときには2人とも表示されるようにしたいです。 お願い致します。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
この ○月○日生 と言うのがくせ者です 文字列として認識されている場合と 日付として認識されている場合ではやり方が変わってきます No1で示されている内容は後者であると想定されてもので 前者であった場合は機能しない可能性があります 「月」や「日」を入力するために全角で数字を入力した場合は 文字列で認識されると思います 本来こういった場合は ○/○/○ と入力しておいて書式設定で mm月dd日 とする事によりお示しのように表示させるのがExcelの本来の使い方であり そうした方が遥かにExcelの機能をスムーズに使えるので シート管理が楽に行えるのですが 実際にそうされているケースの方が少数派である事は確かだと思います ナノでこの…については確認しておかないと行けなくなる訳です 確認方法としましては =if(istext(a5),"テキスト形式で入力されています","正しくしシアル値として入力されています") (※ A5は仮に書いたセルアドレスですので適切な位置に書き換えてください と適当なセルに入力して頂けると分かります もし文字列として入力されている場合は 全く新たな式が必要となるかもしれませんので その旨補足事項をお知らせ頂けますようお願いします
その他の回答 (2)
- mu2011
- ベストアンサー率38% (1910/4994)
一例です。 B列書式が不明の為、B列は文字列で全て全角で入力されている前提としています。 以下の数式を任意セルに設定、下方向に必要分コピーして下さい。 尚、数式は配列数式の為、入力完了時にshift+ctrl+enterキーを同時押下して下さい。 =IF(COUNTIF(B:B,JIS(TEXT(TODAY(),"m月d日生")))>ROW(A1)-1,INDEX(A:A,SMALL(IF($B$1:$B$100=JIS(TEXT(TODAY(),"m月d日生")),ROW($A$1:$A$100),99999),ROW(A1))),"")
お礼
ご親切にご回答いただきありがとうございました。
- hallo-2007
- ベストアンサー率41% (888/2115)
作業列案です。 A B C D E ~さん ○月○日生 ○月○日生 ~くん ○月○日生 ~くん ○月○日生 ~さん ○月○日生 ~さん ○月○日生 D1に本日(或いは表示したい誕生日)の日付をB列同じ様に入力しているとして C列には =IF(B1=D$1,ROW(),"") 下までコピィします。 D1と同じ内容の時に その行番号 が表示されます。 E1に =IF(ISERROR(SMALL(C:C,ROW(A1))),"",INDEX(A:A,SMALL(C:C,ROW(A1)))) といれて下までコピィしてみてください。 B列の日付の入れ方、本日(表示したい日付)の入れ方が異なれば工夫が必要です。 ちなみに本日の日付は =TODAY() で取得できますので もじB列が文字列 ○月○日生 と入れているのであれば =TEXT(TODAY(),"m月d日生") とかをD1セルに入れればよいと思います。
お礼
ご親切にご回答いただきありがとうございました。
お礼
ご親切にご回答いただきありがとうございました。