アプリ版:「スタンプのみでお礼する」機能のリリースについて

こんばんは。

社内のスケジュール管理をするためにエクセル2016で作成したスケジュールリスト(シート1)を万年カレンダー(シート2)に反映させたいです。
「開始時間 内容 活動者」という風にカレンダーに表示したいのですが、なかなかうまくいきません。同日に7件ほどスケジュールを入れることもあります。
どうかご教授くださいますようお願い致します。

「別シートのスケジュールリストをカレンダー」の質問画像

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

  • 図が不明瞭で大変申し訳ありませんでした。
    それにも関わらずご回答いただき、本当にありがとうございます。
    ご回答いただいたあと、やってみましたがなかなか上手くいかず。。。

    アドバイスいただきました通り、H列にB~D列を連結させ文字列化いたしました。
    こちらの場合のA4セルにいれる式をお手数おかけしますが教えていただけませんか?
    ※仮定条件はすべて合っております。
    宜しくお願い致します。

    No.1の回答に寄せられた補足コメントです。 補足日時:2021/10/06 14:28
  • 出来ました!fujillin様すごいです!
    ありがとうございます!!

    もう1点だけ教えていただきたいのですが、もしカレンダーの行を増やした場合(例えば20行)、どのように式を変えればいいのでしょうか?追加質問で本当に申し訳ありません。。
    宜しくお願いいたします。

    No.2の回答に寄せられた補足コメントです。 補足日時:2021/10/06 16:04

A 回答 (2件)

こんにちは



図がはっきり識別できないのと、ご説明文に明示されていないので、以下は仮定条件だらけでの回答になります。

◇仮定条件
・「シート1」と書かれているシートの正確なシート名は「Sheet1」と仮定
・シート1のA列はシリアル値(=エクセルの日付型の数値)である
・シート2の日付のある行番号は、3、11、19、27、35行目で固定である
・シート2の上記の日付行の日付はシリアル値を書式で日だけ表示している
・各蘭に表示する内容は、シート1のB列~D列をスペース区切りで結合した内容

>エクセル2016で作成したスケジュールリスト
2016だと、その後の「便利機能」がほとんど利用できませんね。
例えば、365のFILTER関数やスピル機能、2019のTEXTJOIN関数など。
ですので、一つずつの項目をプリミティブに検索したものを連結する方式になるので、式が5倍くらいに長いものになってしまいます。

また、ご提示の図でシート1のB列がシリアル値かどうか不明なのと、空白セルもあるようなので(空白かどうか判定して処理し、更に時刻の文字列に変換する必要がある)、式がますます長くなってしまうため、以下は「要領のみ」という意味で、C列とD列を連結したものを表示するようにしてあります。
B列も反映したければ、同様の検索方法でB列を検索し、空白は空白、時刻は時刻文字列に変換して連結すれば、同時に表示することは可能です。
ただし、式が相当に長くなってしまいますので、そうならないためには、仮に、G列にでも「B列を文字列化」したものを関数で表示するようにしておいて、連結する際はそちらを参照するようにしておくのが宜しいでしょう。
いっそのこと、G列にB~D列を連結したものを表示するようにしておけば、下記の式も約半分の長さにすることができます。(G列を参照するだけで良くなるので)


前置きがやたらと長くなりましたが、前記の条件が満たされているとして、ご提示のシート2のA4セルに
=IFERROR(INDEX(Sheet1!$C:$C,AGGREGATE(15,6,ROW(A$2:A$99)/(Sheet1!$A$2:$A$99=INDEX(A:A,INT(RW(A8)/8)*8-5)),MOD(ROW(A8),8)+1))&" "&INDEX(Sheet1!$D:$D,AGGREGATE(15,6,ROW(A$2:A$99)/(Sheet1!$A$2:$A$99=INDEX(A:A,INT(ROW(A8)/8)*8-5)),MOD(ROW(A8),8)+1)),"")
の式を入力し、右方、下方にフィルコピー。
更に、全体を次の週にコピペ。 を繰り返せばできると思います。

※ お断りしたように、シート1のC、D列を連結した結果が表示されます。
※ 式を簡単にしたければ、前述のように作業列にB~D列を連結した内容を表示し、そちらを(そのまま)表示する仕組みにする方が、全体的に簡単な式になりますし、計算も早くなるはずです。
この回答への補足あり
    • good
    • 0
この回答へのお礼

fujillin様、ご丁寧にご回答くださり、本当に助かりました。
間違って質問を締め切ってしまいました(;^_^A
質問させていただいたのに失礼なことをしてしまい大変申し訳ありません。
本当にありがとうございました!

お礼日時:2021/10/06 23:19

No1です。



>※仮定条件はすべて合っております。
ということは、No1の関数式で、一応は表示ができたものと解釈しました。
(そうでない場合は、以下の関数式は全滅になります)


>アドバイスいただきました通り、H列にB~D列を連結させ文字列化いたしました。
>こちらの場合のA4セルにいれる式をお手数おかけしますが教えていただけませんか?
シート2のA4セルに
=IFERROR(INDEX(Sheet1!$H:$H,AGGREGATE(15,6,ROW(A$2:A$99)/(Sheet1!$A$2:$A$99=INDEX(A:A,INT(ROW(A8)/8)*8-5)),MOD(ROW(A8),8)+1)),"")
を入力して、右、下方向にフィルコピー。
セル範囲全体を翌週にコピペ、を繰り返す要領です。
(H列を参照するだけなので、No1よりは大分短くなったと思います。)


念のため、H列の式も作成したので以下に・・・
シート1のB列の時刻も「シリアル値」で、空白の場合もあるものと仮定しました。
H2セルに、
 =IF(B2="",REPT(" ",6),TEXT(B2,"h:mm "))&C2&" "&D2
として、充分に下方までフィルコピーしておきます。
(あらかじめ未入力部分までコピーしておく方が、後で追加するよりも楽です)
これによって、連結した結果が表示されると思います。
使用文字を「等幅フォント」と仮定してスペースを設定してありますので、そうでない場合は「REPT(" ",6)」の6の部分を調節してみてください。
この回答への補足あり
    • good
    • 0

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

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