プロが教える店舗&オフィスのセキュリティ対策術

Excelで勤務シフト表を作りたいのですが、セルの設定方法がわかりません。

シート1の「シフト表」に勤務場所A・B・Cを入力するだけで、自動的にシート2の
「配置メンバー」へ配置場所 対 人名の表が並べ替えられて出力されるようにするには、
どのセルにどのような関数を設定すればよいのでしょうか?

マクロやVBAをなどを使わず、もっとも簡単にできる方法を教えてください。
(掲載画像は関数などを使わず、手作業で入力したものです。)

「Excelで勤務シフト表を作りたいのです」の質問画像

A 回答 (2件)

こんばんは!


続いてお邪魔します。
関数の説明ですが、

前回の数式はこちらが勝手に10行目まで対応できる数式にしていましたので
データ量によって範囲指定の領域はアレンジしてください。

=IF($A3="","",INDEX(Sheet1!$A$3:$A$10,MATCH($A3,Sheet1!B$3:B$10,0)))

の前半部分 =IF($A3="","", は
単にエラー処理のための数式です。
A3セルが空白の場合は空白にしなさい!という意味で、
A3セル(複合参照しています 「$」マークがAの前だけについています)を
オートフィルで列方向と行方向にコピーした場合、
A列は固定して行番号だけが相対参照するようにしています。
すなわち、下へコピーするたびに、A3→A4→A5・・・と数式が変更します。
列方向へはいくらコピーしてもA列を参照することになります。

そして後半の
INDEX(Sheet1!$A$3:$A$10,MATCH($A3,Sheet1!B$3:B$10,0)) の部分は
A3セルが空白でない場合の数式になります。

Sheet1のA3~A10セルは絶対参照(「$」マークが列番号と行番号の前についています)
ですので、いくら列方向や行方向にコピーしても常にこのセルを参照します
この配置で、A3セルを参照しB3~B10セル
(複合参照です、このB$3:B$10は行を固定し、列は相対参照です。行方向にコピーしても3~10行目を常に参照します。
列方向に関してはオートフィルでコピーするにしたがって、列も移動しますので
コピーした一つ右となりの列の数式をみたもらうと
C$3:C$10 となっているはずです。
結局その行内でA3と一致する行番号(INDEX関数で範囲指定した行の何行目か?)を表示させています。

これで、画像のSheet2の1日はSheet1のB2~B10を参照し、3行目は「A」と一致する「鈴木さん」
4行目は「B」と一致する「佐藤さん」・・・
という表示になる訳です。
2日も同様になりますので、
Sheet1のC2~C10を参照し、「A」と一致するのは「田中さん」「B」と一致するのは「鈴木さん」・・・
といった具合です。

以上、大変長々と書いてしまいましたが
この程度で理解いただけたでしょうか?
どうも失礼しました。m(__)m
    • good
    • 0
この回答へのお礼

書きこみありがとうございます!
大変よい解説で助かりました!

お礼日時:2010/03/03 19:46

こんばんは!


一例です。
↓の画像でSheet2のB3セルに
=IF($A3="","",INDEX(Sheet1!$A$3:$A$10,MATCH($A3,Sheet1!B$3:B$10,0)))
という数式を入れ、オートフィルで列方向と行方向にコピーしています。

これで画像のような感じになります。

以上、参考になれば幸いですが、
的外れであったり、他に良い方法があれば
読み流してくださいね。m(__)m
「Excelで勤務シフト表を作りたいのです」の回答画像1
    • good
    • 0
この回答へのお礼

oooでもうまく行きました。

できれば関数の詳細について解説いただければ幸いです。

ありがとうございました~。

お礼日時:2010/03/02 11:21

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