• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルでシフト管理表を作りたく、教えてください。)

エクセルでシフト管理表を作りたい!教えてください

このQ&Aのポイント
  • エクセルでシフト管理表を作成する方法を教えてください。シート1には70人の名前が縦軸に入力され、横軸には31日までの日にちが書かれています。日にちと名前が合う場所に出勤時間と退勤時間を入力したいです。
  • さらに、出勤時間を9時〜11時、12時〜15時、16時以降の3つの区切りで反映したいです。
  • また、日にちごとにシートを作成し、その日に誰が何時に出勤するかが一目でわかるようにしたいです。

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

  • ベストアンサー
noname#192382
noname#192382
回答No.2

回答1の追加です.マクロを実行しますとシート1のデータが上下に乱れますが、元に戻すには第1列のIDを使って並べ替えをすることにより戻すことが出来ます。

その他の回答 (1)

noname#192382
noname#192382
回答No.1

回答いたします。試してみてください。 シート1のB4にその月の日数を入れてください。またC4に人数を入れてください。 そこでマクロ3を実行して、それが終わったらマクロ4を実行してください、。これであなたの希望のものに近いデータが得られるはずです。 Sub Macro3() ' ' Macro3 Macro ' マクロ記録日 : 2012/11/1 ユーザー名 : ' Dim dayno As Integer, sheetno As Integer, retuno As Integer, retuno2 As Integer, kazu As Integer, lastgyo As Integer kazu = Cells(4, 2) lastgyo = Cells(4, 3) + 4 For dayno = 1 To kazu 'dayno = 1 sheetno = dayno + 1 retuno = dayno * 2 + 2 retuno2 = retuno + 1 '並べ替え Sheets("Sheet1").Select Range(Cells(5, 1), Cells(lastgyo, 9)).Select Selection.Sort Key1:=Cells(5, retuno), Order1:=xlAscending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _ :=xlPinYin '氏名コピー Range(Cells(5, 2), Cells(lastgyo, 2)).Select Selection.Copy Worksheets(sheetno).Select Cells(2, 14).Select ActiveSheet.Paste 'データコピー Sheets("Sheet1").Select Range(Cells(5, retuno), Cells(lastgyo, retuno2)).Select Application.CutCopyMode = False Selection.Copy Worksheets(sheetno).Select Cells(2, 15).Select ActiveSheet.Paste Next ' End Sub Sub Macro4() ' ' Macro4 Macro ' マクロ記録日 : 2012/11/1 ユーザー名 : ' Dim sheetno As Integer, mygyo As Integer For sheetno = 2 To 4 Worksheets(sheetno).Select mygyo = 2 For mygyo = 2 To 3 If Cells(mygyo, 15) <> "" Then If Cells(mygyo, 15) < 12 Then Cells(mygyo, 2) = Cells(mygyo, 14) Cells(mygyo, 3) = Cells(mygyo, 15) Cells(mygyo, 4) = Cells(mygyo, 16) ElseIf Cells(mygyo, 15) < 16 Then Cells(mygyo, 5) = Cells(mygyo, 14) Cells(mygyo, 6) = Cells(mygyo, 15) Cells(mygyo, 7) = Cells(mygyo, 16) Else Cells(mygyo, 8) = Cells(mygyo, 14) Cells(mygyo, 9) = Cells(mygyo, 15) Cells(mygyo, 10) = Cells(mygyo, 16) End If End If Next Next ' End Sub

nb75gfmv73
質問者

お礼

ありがとうございます。 今夜試してみます。 マクロ始めてなのでやってみます。 本当にありがとうございます。

関連するQ&A