- ベストアンサー
Excelで勤務シフト表を作りたいのですが、セルの設定方法がわかりませ
- みんなの回答 (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
その他の回答 (1)
- tom04
- ベストアンサー率49% (2537/5117)
お礼
書きこみありがとうございます! 大変よい解説で助かりました!