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

A列に月日、B列に作業者名、C列に勤務体系(早番、遅番、他)があり、月日は4/1~3/31まであります。作業者名は多く、日々変動があります。
これを別シートに別表として表示します。
A列に月日、B列以降、C,D,E...に各作業者名が入り、個人別の勤務一覧となります。
例えば4/1 阿部 早番、石川 遅番のように月日と作業者名の交差セルに勤務体系が入るようにしたいのですが、作業者が変動するのでうまくいきません。
どなたかお助けください。

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

  • つらい・・・

    早速ありがとうございます。
    fujillinさんの通りの内容のシートになります。
    質問内容がわかりにくいのを反省しています。
    関数でやりたいのですが、どの関数を組み合わせるのかわかりません。
    できればセルごとの関数を教えて頂ければさいわいです。
    関数初心者です。よろしくお願いいたします。

    No.1の回答に寄せられた補足コメントです。 補足日時:2019/09/10 23:28

A 回答 (3件)

こんにちは



説明文だけでは全体の構成がよくわかりませんが・・・

>A列に月日、B列に作業者名、C列に勤務体系(早番、遅番、他)があり、
>月日は4/1~3/31まであります。作業者名は多く、日々変動があります。
これって、作業者の人数分だけA列には同じ日にちが重複して存在するということでしょうか?
(よって、全体の行数は365日分ではなく、概ね365×人数分程度ということでしょか?)

それを元にして、同じ日にちの内容をまとめて1行にし、(元の)B、C列をセットにして横に並べたいという意味でしょうか?
もしそうであれば、関数でもVBAでもどちらでも対応可能と思われます。

>作業者が変動するのでうまくいきません。
イメージがわかりませんが、元の表を参照して表示する仕組みになっていれば「うまくいかない」というケースがどのような場合なのか思いつきません。
「作業者が変動するので」うまくいかないというケースを、具体的にご説明願います。
この回答への補足あり
    • good
    • 0

「A列に月日、B列に作業者名、C列に勤務体系(早番、遅番、他)があり、月日は4/1~3/31まである、データで埋めた行列番号入りの10行くらいのサンプル表と、それを全て参照して


「A列に月日、B列以降、C,D,E...に各作業者名が入り、個人別の勤務一覧とな」った行列番号入り別表を示せば、貴方が良く理解できる数式を呈示できようかと。
    • good
    • 0

No1です。



>fujillinさんの通りの内容のシートになります。
もう一度読み直したら、どうやら違う気がしてきました。
作成したいシートは、日付と作業者が項目軸となっているマトリックスに、勤務形態をプロットするイメージではなかろうかと思い直しましたので、ひとまずその内容で回答します。

違っているかも知れませんが、添付図のような構成を想定しました。
・上段がSheet1で日々記入(?)してゆく元シート
・下段が、それを基にマトリックス状に整理したシート
のイメージです。

Sheet1で同じ日に同じ人が複数記入されていると(誤記入?)、マトリックスに該当するデータが複数あることになってしまいますが、先にヒットした方を採用し、ダブっていることのチェックは行っていません。
(もしも、そのようなチェックを行うなら、記入側のSheet1で行った方が良いでしょう)

さてご質問の内容としては、マトリックスの内部(添付図の水色部)さえ埋められれば良さそうですが、項目(添付図の黄色、黄緑色部)も含めて抽出したい場合も含めて以下に記しておきます。
※ 元のシート名は「Sheet1」と仮定します。
※ 下記の式は、Sheet1の1~999行までを対象範囲としています。
 (異なる場合は調整が必要です)
添付図の下段B2セルに
=IFERROR(IF($A2="","",INDEX(Sheet1!$C:$C,AGGREGATE(15,6,INDEX(ROW($A$1:$A$999)/(Sheet1!$A$1:$A$999=$A2)/(Sheet1!$B$1:$B$999=B$1),,),1))),"")
の式を入れて、水色部分にフィルコピーすることで、タイトルに応じた内容を検索し表示されます。


項目蘭も自動抽出したい場合は。A2セルに
=IFERROR(INDEX(Sheet1!A:A,AGGREGATE(15,6,INDEX(ROW($A$1:$A$999)/(COUNTIF(OFFSET(Sheet1!$A$1,0,0,ROW($A$1:$A$999)),Sheet1!$A$1:$A$999)=1),,),ROW(A1))),"")
の式を入れて下方にフィルコピー(黄色部分)

B1セルに
=IFERROR(INDEX(Sheet1!$B:$B,AGGREGATE(15,6,INDEX(ROW($B$1:$B$999)/(COUNTIF(OFFSET(Sheet1!$B$1,0,0,ROW($B$1:$B$999)),Sheet1!$B$1:$B$999)=1),,),COLUMN(A1))),"")
の式を入れて、右方にフィルコピー(黄緑色部分)

※ 抽出は出現順に行われますので、必ずしも(何かの)順序通りになるとは限りません。
「エクセルで別シートに表示」の回答画像3
    • good
    • 0
この回答へのお礼

ありがとうございました。
複雑な関数の組み合わせで簡単にできることに驚きました。
不十分な説明を読み解いて質問者の要望に十二分に応える
すばらしいの一言に尽きます。
関数をひとつひとつ調べても、組み合わせて何をしているのか
まだ理解できません。
機会があれば教えて頂ければと思います。

お礼日時:2019/09/12 18:33

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