- ベストアンサー
勤務表の作成で困ってます・・。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
提示のデータのみで検証しましたが、1つの数式を他のセルへコピーするためには少々面倒なやり方になります。 貼付画像のF4セルにINDEX関数で次のような数式を組込み、必要なセルへコピーします。 F4=INDEX(INDIRECT(ADDRESS(MATCH($E4,$A:$A,0),1)&":"&ADDRESS(MATCH($E4,$A:$A,0)+5,3)),MATCH(INDIRECT(ADDRESS(2,INT(COLUMN()/2)*2)),INDIRECT(ADDRESS(MATCH($E4,$A:$A,0),1)&":"&ADDRESS(MATCH($E4,$A:$A,0)+5,1)),0),MATCH(F$3,INDIRECT(ADDRESS(MATCH($E4,$A:$A,0)+1,1)&":"&ADDRESS(MATCH($E4,$A:$A,0)+1,3)),0)) この式は検索値、範囲等をINDIRECT関数で割り出していますので分かり難いと思います。 セルの書式は「時刻」の"h:mm"としました。 1つの方法として参考にしてください。 尚、この数式はエラー処理を考慮していませんので必要があれば追加してください。 また、出勤、退勤の時刻が未入力のときは0:00と表示されますので不都合であれば条件付き書式で値が0のときは文字の色を白にして見えなくする方法で対処すると良いでしょう。
その他の回答 (2)
- tom04
- ベストアンサー率49% (2537/5117)
こんにちは! 大前提として・・・ (1)↓の画像のように左側Sheet1のレイアウトは画像通りとなっている。 (2)Sheet1の人数は4人 (3)日付はシリアル値で入っている (4)Sheet1の名前順に右側のSheet2の名前も並んでいる。 上記の条件での一例です。 Sheet2のA3セル(セルの表示形式は「日付」)に =IFERROR(SMALL(IF(ISNUMBER(Sheet1!A$1:A$1000),Sheet1!A$1:A$1000),ROW(A1)),"") これは配列数式になりますので、Ctrl+Shift+Enterで確定! この画面からコピー&ペーストする場合は 上記数式をドラッグ&コピー → A3セルを選択 → 数式バー内に貼り付け → そのまま(編集可能なまま) Ctrl+Shiftキーを押しながらEnterキーで確定! 数式の前後に{ }マークが入ります。 次にB3セル(セルの表示形式は「時刻」・配列数式ではありません)に =IFERROR(INDEX(OFFSET(Sheet1!$A$1,MATCH($A3,Sheet1!$A$1:$A$1000,0)+1,1,4,2),INT(COLUMN(B1)/2),MOD(COLUMN(B1),2)+1),"") という数式を入れI3セルまでフィルハンドルでコピー。 最後にA3~I3セルを範囲指定 → I3セルのフィルハンドルで下へコピー! 一応これで完成ですが、Sheet1の対象セルが空白の場合「0」が表示されてしまいますので、 画面左上のOfficeボタン(Excel2007の場合) → Excelのオプション → 詳細設定 → 「次のシートで作業するときの・・・」 → 「Sheet2」が選択されているのを確認し → 「ゼロ値のセルに・・・」のチェックを外してOK これで何とかご希望通りにならないでしょうか?m(_ _)m
お礼
丁寧な御回答ありがとうございました。 一応、なんとか対応することができました。 粗雑な質問に回答頂きありがとうございました。 また今後とも宜しくお願い致します。m(_ _)m
- keithin
- ベストアンサー率66% (5278/7941)
F4: =SUMIFS($B$3:$B$12,$A$1:$A$9,$E4,$A$3:$A$12,F$2) セルの書式設定の表示形式のユーザー定義で h:mm;;; G4: =SUMIFS($C$3:$C$12,$A$1:$A$9,$E4,$A$3:$A$12,F$2) セルの書式設定の表示形式のユーザー定義で h:mm;;; 2つを下にコピー、右にコピー。
お礼
丁寧な御回答ありがとうございました。 一応、なんとか対応することができました。 粗雑な質問に回答頂きありがとうございました。 また今後とも宜しくお願い致します。m(_ _)m
お礼
丁寧な御回答ありがとうございました。 一応、なんとか対応することができました。 粗雑な質問に回答頂きありがとうございました。 また今後とも宜しくお願い致します。m(_ _)m