みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

Excelで勤務管理と座席表作成をしたい。

仕事で勤務管理と座席表作成を行っています。
勤務はシフト勤務で勤務に応じた座席表も作っています。

現在座席表はほぼ手入力でやっており非常に手間がかかっています。
1か月分まとめて作っていますが非常に面倒なので勤務表を貼り付けると座席表ができるようにしたいのですがなかなか制限があり苦慮しています。
よい方法があればご教示願います。

シフト表
1列目に日付(1日~末日)
A列に名前があり、A~Gの勤務シフトがある。(全部で20人)

座席表
全部で10席。固定の席はなく出勤者に応じて決めています。
シフト表に応じて座席表に人を埋めたい。

使用ソフト:Excel2003(ただしセキュリティー制限でマクロ、VBAが使えません。もちろん制限解除はできません。)
なので関数を駆使しないといけないです。
シートは別になってもOKです。

仮にSheet2のA1~A10に名前が埋まるようにしたいです。

投稿日時 - 2007-12-29 16:19:16

QNo.3636293

困ってます

質問者が選んだベストアンサー

◆こんなことでしょうか?
◆人数は少なくしています
★Sheet1
   A     B     C     D     E
1  社員名  1/1   1/2   1/3   1/4
2  社員1    A              C
3  社員2    A              B
3  社員3    B         A
4  社員4    C         A
5  社員5         A    B
6  社員6         A    C
7  社員7         B         A
8  社員8         C         A

★Sheet2
   A
1  1/4
2  社員1
3  社員2
4  社員7
5  社員8
6

◆Sheet1にシフト表を入力して、Sheet2のA1に日付を入力するとその日の出勤者がA2以下に表示されます
★A2の式
A2=IF(ROW(A1)>SUMPRODUCT((Sheet1!$B$1:$E$1=$A$1)*(Sheet1!$B$2:$E$9<>"")),"",INDEX(Sheet1!$A$1:$A$9,SMALL(INDEX(SUBSTITUTE((Sheet1!$B$1:$E$1=$A$1)*(Sheet1!$B$2:$E$9<>""),0,10^5)*ROW($A$2:$A$9),),ROW(A1))))
★下にコピー

◆人数や日数を少なくしています、実際の条件に変更してください

投稿日時 - 2007-12-30 06:14:11

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.2

◆omochicchiさん、勤務シフト表を具体的に提示していただけないでしょうか

投稿日時 - 2007-12-29 18:24:17

補足

      1  2  3  4 ・・・
A     1/1 1/2 1/3 1/4・・・
B 社員1  A  A     A ・・・
C 社員2  A  A  A   ・・・
D 社員3  B  B      ・・・
E 社員4  C        ・・・

とあります。
勤務体系はA~Fの6パターン
社員は20人
席は10席で休みの人がいるときは詰めて配置する。
10人以下の出勤の場合もある。

こんな感じです。

投稿日時 - 2007-12-29 18:34:47

お礼

↑ 行と列が逆でした。すみません。

投稿日時 - 2007-12-29 18:42:22

ANo.1

現在
  A   B  C   D
    12/1 12/2 12/3 12/4・・・・・
社員1  A  A   A   A
社員2  A  A   A   A
社員2  B  B   C   C
 ・
 ・
こんな感じですか?
仮に
A30に
A1
A2


A10
B1

シフトと座席番号を準備
B30に
=INDEX($A$2:$A$21,SMALL(IF(B$2:B$21=LEFT($A30,1),ROW(B$2:B$21),""),MID($A30,2,2)),1)
コピィして、Ctrl+Shift+Enter
配列関数ご理解できますでしょうか?
下フィル、右フィルでは、
エラー処理や他シートの場合の対応は、ご自身で!!

投稿日時 - 2007-12-29 17:40:34

補足

配列関数は理解しておるつもりです。

勤務表はそのような感じでOKです。

座席表なのですが、表と言うよりは配置図のようになっており
セルを囲って席とみなしている状態です。(最終的にその図に
名前が表示できるようにしたい)

人数分の席を作ると簡単なのですが、なんせ席が10席しかない
ので(欠勤者のところは)詰めなければなりません。
またこの配置図のレイアウトも変更できないのです。

なので、出勤者を詰めた(空白セルを自動的に削除させて)
その配置図に引っ張ろうかと思っています。

投稿日時 - 2007-12-29 17:55:03

あなたにオススメの質問