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

エクセルでシフトを作成しているのですが
まず初めに勤務先別のシフト(画像上)を作成します。
※日付(行)、勤務先(列)の表です。
このシフトから個人別のシフト(画像下)を作成したいです。
※日付(行)、個人(列)の表です。

勤務先別のシフトでは1つの場所に2人勤務や日勤夜勤などがあります。
この場合でも反映される関数があれば教えていただきたいです。
よろしくお願いいたします。

「エクセルでシフト表を作成中で困っています」の質問画像

A 回答 (3件)

fujillinさん同様、日付は同じ形式(数値またはシリアル値)とします。


※配列定数{"A","B","C","D"}部分は追加してください。
※参照範囲の100は計算効率を考えて仮の数値です。実際のDATA数に置換えてください。列全体参照[C:C][A:A]でも可能ですが演算処理が遅くなります。
B5=IFERROR(LOOKUP(MATCH($A5,勤務場所別!C$1:C$100,0),INDEX(AGGREGATE(15,6,INDEX(ROW($A$1:$A$100)*1/(勤務場所別!$A$1:$A$100={"A","B","C","D"}),0),ROW($A$1:$A$100)),0),{"A","B","C","D"}),"")
右並びに下へフィルコピー
    • good
    • 1

こんにちは



勤務場所が結合されていなければ、検索すれば良いだけなので簡単ですが、結合されているために式が複雑になり3倍くらいの長さになります。
メンテも(多分)不可能でしょう。

それぞれのシートで日付は同じ形式(数値またはシリアル値)になっているものと仮定します。
事前準備として、元の表の「$A$5~表の終わりまでの範囲」に名前を付けておきます。
(以下では、仮に stable と名前を付けてあります)

そのうえで、個人別シートのB5セルに
=IFERROR(INDEX(stable,AGGREGATE(14,6,INDEX(ROW(INDEX(stable,,1)),)/(INDEX(stable,,1)<>"")/(INDEX(ROW(INDEX(stable,,1)),)-5<MATCH($A5,INDEX(stable,,MATCH(B$3,INDEX(stable,1,),0)),0)),1)-4,1),"")
を入力し、右方、下方にフィルコピーでいかがでしょうか?
    • good
    • 1

質問者さんが悩んでいるように、エクセルをシフト表で作成するのは難しいです。



なので、専用のソフトが13種類くらい発売されています。
また、有料だけでなく、無料のソフトやインストール不要のWebソフト(有料)のものもあるみたいです。

餅は餅屋にまかせましょう。
    • good
    • 1

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