- ベストアンサー
エクセル名簿から、今週誕生日を迎える人を表示する
エクセルで名簿を作り、誕生日が入っています 名簿を開かず、デスクトップの画面に今週誕生日を迎える人を自動的に表示したいのですが、そんなことは出来るのでしょうか? デスクトップへの表示が難しいようならエクセル名簿を立ち上げ、別シートへの表示でも良いと思っています どのような関数を使用するのでしょうか?
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
Poerです。お待たせ?しました。訂正です。週が月をまたいでも、さらには年をまたいでも結果が出るように改良しました。#4からの続きとして考えてください。 (1)F列(全体)を削除します。 (2)E1の項目名を、「年差用数」(年をまたぐときに必要な数です。ネーミングは適当です)に変更します。 (3)式を変更します。 E2… =IF(MONTH(I2)>=MONTH(B$2),1,0) F2… =IF(AND(DATE(YEAR(B$1-E2),MONTH(I2),DAY(I2))>=B$2,DATE(YEAR(B$1-E2),MONTH(I2),DAY(I2))<=B$3),1,0) 変更し終えたら、元データの下端まで(オートフィルで)縦にコピーします。 これでいかがでしょうか?今度はたぶん大丈夫だと思います。B1の日付を適当に変えてみるなどして、是非試してみてください。
その他の回答 (5)
- Poer
- ベストアンサー率45% (72/157)
#3です。たびたびすみません。週が月をまたぐときに結果が出ないという初歩的な欠陥に気づきました。よろしければ少し考えさせてください。
- Poer
- ベストアンサー率45% (72/157)
#3です。失礼しました。L2に入れる式には「I$11」が2つありますが、これはあくまでも模範です。この「11」の部分には元データの下端の行数を入れてください。
- Poer
- ベストアンサー率45% (72/157)
採否は別として、私のやり方です。今週誕生日を迎える人を上に詰めて表示します。 I列にに氏名、J列に生年月日の元データが入っているとし、L列に該当者の名前が出るとします。 (1)まずは項目を入力します。A1に「今日」、A2に「今週の日曜日」、A3に「今週の土曜日」、E1に「月照合」、F1に「日照合」、G1に「該当」、H1に「抽出No.」と入力してください。I1に「氏名」、J1に「生年月日」という項目名があり、その2行目以降に元のデータが入っているとします。 (2)数式を入力します。 以下、「セル番地…入力する数式」です。 B1… =TODAY() B2… =B1+1-C1 B3… =B1+7-C1 C1… =WEEKDAY(B1) →このセルは、メニューバーの「表示」→「セル」→「表示形式」→「ユーザー定義」で、「種類」のところに「aaaa」と入力してください。 E2… =IF(AND(MONTH(J2)>=MONTH(B$2),MONTH(J2)<=MONTH(B$3)),1,0) F2… =IF(AND(DAY(J2)>=DAY(B$2),DAY(J2)<=DAY(B$3)),1,0) G2… =IF(E2+F2=2,1,0) H2… =SUM(G$2:G2) L2… =IF(ISERROR(VLOOKUP(ROW(A1),$H$2:I$11,COLUMN(B1),0)),"",VLOOKUP(ROW(A1),$H$2:I$11,COLUMN(B1),0)) (3)E2~H2を表のもとデータの下端の行まで縦に(オートフィルで)コピーします。L2も同様の操作を行います。(ちなみにL列をM列にコピーすると、該当者の生年月日も表示されます。) (4)うまくいったら、E列~H列は作業列なので、列幅をゼロにするなどして列を隠します。 (5)結果だけを別のシートに移したい場合は、L列(およびM列)を「切り取り+貼り付け」で移動させてください。
- papayuka
- ベストアンサー率45% (1388/3066)
#1です。 先の関数は月が違っても☆を出しちゃうので、使い物にならないようで、、、 =IF(AND(MONTH(TODAY())=MONTH(A1),(DAY(A1)-DAY(TODAY()))<=7,(DAY(A1)-DAY(TODAY()))>=0),"☆","") ならOKかな、、、
お礼
さっそくご回答でうれしくなります でも、誕生日の方を探すのに全員を確認するか、並び替えなどの作業をおこなう必要があるようですね 希望としては、立ち上げての一発表示です・・・ ☆印を探して、その人の名前を表示させる方法を工夫してみます ありがとうございます (⌒▽⌒)
- papayuka
- ベストアンサー率45% (1388/3066)
開かずにデスクトップにって言うのは解りません。 用途的にはExcelではなく、デスクトップに置くカレンダーソフトやスケジュールソフトで管理した方が良いかと思います。 今日が 2005/6/12 で A1に誕生日(仮に 2005/6/19)が入っているとして、B1に =IF(ISERROR(DATEDIF(TODAY(),A1,"md")),"",IF(DATEDIF(TODAY(),A1,"md")<=7,"☆","")) と入れると ☆ が出ます。 2005/6/20だと出ません。
お礼
いろいろ考えていただき、ご苦労をお掛けしています でも、うれしいです それで… 試してみました そしたら、表示するのが今週誕生日を迎える方でした 質問が「今週誕生日を」でしたね ゴメン (*o☆)\ 「これから一週間以内に誕生日を迎える方」を知りたかったのです 「今週の土曜日を「今日」に 今週の日曜日を「今日+7」に変えてできました 希望通りです ありがとうございました でも、皆さん スゴイですね! 感謝!