いつでも医師に相談、gooドクター

Excelにお詳しい方、ご指導お願いいたします。
リスト型のスケジュールをカレンダーに反映したいです。
(Excel2010を使用しています)

sheet1は年月の入力で変化する万年カレンダーです。
このカレンダーにsheet2のリスト型のスケジュールを反映させたいのです。

自分なりに調べてみて、A5のセルには
=IFERROR(INDEX(予定名,MATCH(A$4,日付,0))&"","")と入力して、
フィルハンドルで横に引っ張っています(sheet2のA列を「日付」B列を「予定名」と名前を付けています)。
しかし、この数式では同日に2つ予定があった場合の表示ができず、下にフィルハンドルを引っ張ると同じ予定が並んでしまいます。
同日の予定は最大で4件になりますが、なんとかカレンダーに4件の予定を表示させることはできないでしょうか?
できれば、カレンダーの1日の中に予定名と場所の表示をさせたいです。

リスト型のスケジュールは、予定が増えると随時列を挿入して追加していきます。

勤務先で、毎日多くの会議や研修が開催されており、予定がパッと見て分かるものの作成を任されました。しかし、やりたいことに実力が伴わず悩んでいます。。。
どうかアドバイスをください。よろしくお願いいたします。

「Excel2010 リスト型の予定表をカ」の質問画像

質問者からの補足コメント

  • tom4さま

    ご回答ありがとうございます!!
    無事、カレンダーに反映させることができました!

    もうひとつ、アドバイスをいただきたいのですが、
    シート2のリストにも、「スケジュール表」というような見出しを付けたいと思っています。

    行を挿入して、教えていただいた関数の参照範囲を調整したのですが、正しく結果が表示されなくなってしまいました。。。

    こちらについてもぜひアドバイスをいただけると大変ありがたいです。。。m(_ _)m
    よろしくお願いいたします

      補足日時:2017/11/15 15:08
  • tom04さま

    お返事いただきありがとうございます!

    シート2の範囲は行を挿入しても行番号1からでOKだったのですね。。。
    挿入によって動いてしまった範囲を訂正することで、問題は解決しました!ありがとうございます( ; ; )

    もう少し質問をさせてください。。。
    うちの会社はエクセル2002と2010を併用しているのですが、教えていただいた関数はエクセル2002は対応外なのですね( ; ; )

    2002で使えるようにするために、なにか良い方法はありますでしょうか?
    職員はどちらかというと2002で使う回数の方が多いようです。。。
    2010で質問をしてお答えいただいたのに、申し訳ありません。
    よろしければご指導お願いいたしますm(__)m

      補足日時:2017/11/17 13:28
  • HAPPY

    tom04様

    ご回答ありがとうございます!
    ついに、シートが完成しました!!!
    いただいた関数を参考に、会議の場所も表示させ、とても分かりやすいシートができました。
    オフィスのメンバーにも大好評です!

    たくさん教えていただき、本当にありがとうございました(;_;)

      補足日時:2017/11/21 19:20
gooドクター

A 回答 (5件)

こんにちは!



画像の配置通りだとすると
日付数値の行はシリアル値になっていて、表示形式がユーザー定義から d となっているとします。

まずA5セルに
=IFERROR(INDEX(Sheet2!$B$1:$B$1000,SMALL(IF(Sheet2!$A$1:$A$1000=A$4,ROW($A$1:$A$1000)),MOD(ROW(A5),5)+1)),"")

配列数式なのでCtrl+Shift+Enterで確定! → A8セルまでフィル&コピー → そのまま右へフィル&コピー!

A5セルを選択 → A5セルの四辺にマウスポインタを移動し上下左右の小さな矢印になったところで
Ctrlキーを押しながらA10セルまでドラッグ
数式バー内の「A$4」を「A$9」に変更 → A13セルまでフィル&コピー → そのまま右へフィル&コピー!

同様にA10セルを選択 → A10セルの四辺にマウスポインタを移動、上下左右の小さな矢印になったところで
Ctrlキーを押しながらA15セルまでドラッグ
数式バー内の「A$9」を「A$14」に変更 → A18セルまでフィル&コピー → そのまま右へフィル&コピー!

この操作を最終週の行まで繰り返します。

こんな感じではどうでしょうか?m(_ _)m
    • good
    • 1
この回答へのお礼

あなたに会えてよかった

ベストアンサーさせていただきました!
本当にありがとうございました!!

お礼日時:2017/11/24 23:36

続けてお邪魔します。



No.4の別案です。
A5セルを
=IF(COUNTIF(Sheet2!$A:$A,A$4)>=MOD(ROW(),5)+1,INDEX(Sheet2!$B$1:$B$1000,SMALL(IF(Sheet2!$A$1:$A$1000=A$4,ROW($A$1:$A$1000)),MOD(ROW(),5)+1)),"")

同じく配列数式で各行とも数式バー内の編集をしてください。
上記数式の場合も「A$4」が2か所ありますので、各行でそれぞれ再編集してください。

少しは短い数式になると思います。m(_ _)m
    • good
    • 1

>2002で使えるようにするために、なにか良い方法はありますでしょうか?



IFERROR関数はExcel2007以降のバージョンで使える関数なので、それより前(Excel2003以前)のバージョンの場合は
ISERROR関数を使ってコツコツ数式を入れてやる必要がありませす。

画像の配置通りだとA5セルに
=IF(ISERROR(INDEX(Sheet2!$B$1:$B$1000,SMALL(IF(Sheet2!$A$1:$A$1000=A$4,ROW($A$1:$A$1000)),MOD(ROW(A5),5)+1))),"",INDEX(Sheet2!$B$1:$B$1000,SMALL(IF(Sheet2!$A$1:$A$1000=A$4,ROW($A$1:$A$1000)),MOD(ROW(A5),5)+1)))

前回同様配列数式なので、Ctrl+Shift+Enterで確定! → A8セルまでコピー → そのまま右へコピー!

A5セルを選択 四辺にマウスポインタ → Ctrlキーを押しながらA10セルにドラッグ&ドロップ
数式内の「A$4」が2か所ありますので、2か所とも「A$9」に変更しCtrl+Shift+Enterで確定!
行・列方向にフィル&コピー!

A10セル → Ctrlキーを押しながらA15セルにドラッグ&ドロップ!
同じく「A$9」を「A$14」に変更・・・

これを最終行まで繰り返します。m(_ _)m
    • good
    • 2

>行を挿入して、・・・正しく結果が表示されなくなってしまいました。

。。

もしかして、カレンダーのSheetに数式が入った状態で、Sheet2の行挿入したのでは?

今一度カレンダーのSheetの数式を数式バー内で確認してみてください。
セル番地が変化していませんか?
もし変わっていたら、手間がかかりますが
前回の数式をもう一度入れなおしてみてください。

それとも行挿入した行数だけ数式の行番号をずらしたのですかね?

Sheet2のデータが何行目からあったとしても
数式はそのままの数式で大丈夫のはずです。

>正しく結果が表示されなくなってしまいました

とはどのような表示になったのかこちらでは判らないので、
考えられる原因としてはこの程度でしょうか。m(_ _)m
    • good
    • 1

No.1です。



書き忘れましたが、
すべて配列数式なのでCtrlキーを押しながら各セルにドラッグした後に、
数式を変更したら必ずCtrl+Shift+Enterで確定してください。m(_ _)m
    • good
    • 2

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

gooドクター

このQ&Aを見た人がよく見るQ&A

このカテゴリの人気Q&Aランキング