- ベストアンサー
エクセルで勤務表の作成
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
(1)社員のIDを入力すると自分の欄に飛ぶ --->VBAの力を借りることになります。 (2)その日の出勤と退社の時刻しか更新出来ない --->その日にちによって、保護をかけたり、はずしたり?やはりVBA? (3)その日までの1週間のデータを常に表示 --->別途、データのみのシートに入力したら? 一案です、別途、入力とデータ用のシートを準備します。 A B C D E 1 2 3 日付 ID 出退勤 4 =Today() 出勤 5 6作業列 日付 ID 出退勤 時刻 7 8 適当な位置に ボタンを配置して Sub ボタン1_Click() Dim GYOU As Double GYOU = Range("B" & Rows.Count).End(xlUp).Row + 1 Range("A" & GYOU).Value = Range("B4").Value & Range("C4").Value & Range("D4").Value Range("B" & GYOU).Value = Range("B4").Value Range("C" & GYOU).Value = Range("C4").Value Range("D" & GYOU).Value = Range("D4").Value Range("E" & GYOU).Value = Time End Sub と云ったようなコードを実行させる。 操作方法は、 1、朝の時間は、 D4セルに出勤と入れておく 2、社員の方に、ID を入れてもらって、ボタンを押すと 自動で、日付、ID、出勤、時刻が入ります。 退勤の時間には、D4セルを 退勤にしておいて、朝と同様 作業列(A列)を検索するVlookup関数を写真のシートに 配置すれば、ご希望の表示が簡単にできます。
その他の回答 (2)
- MarcoRossiItaly
- ベストアンサー率40% (454/1128)
(1) 社員さんの数が多くないなら、リンクを人数分、設置しておくのが手っ取り早いです。右クリックして「ハイパーリンク」をクリックから。検索してみてください。(入力するとジャンプみたいに仕込むにはVBA(マクロ)が必要。) シートの枚数が多いのでしょうから、リンクを用意してあげるなら、たぶん全てのシートから全てのシートに飛べるようにしておかないと、あまり意味がないでしょう。数が多いとたいへんなので、「複数シートの同時編集」とかで検索してみてください。 (2) シートを保護してください。その際にあらかじめ、入力を可能にするセルのみ「セルの書式設定」の「保護」タブで「ロック」のチェックを外しておいてから、シートを保護します。検索してみてください。 (3) C3、E3セルに次の式を入力。 M3 =o3-1 O3 =today() 次いで、M3セルをコピーし、C3、E3、G3、I3、K3セルに貼り付け。 以上で表示されているはずの日付をVLOOKUP関数の第1引数「検査値」として使用。各人が入力する表からVLOOKUPによりデータを拾ってきて、添付図の表に表示させる。検索してみてください。 以上ですが、せっかく皆さんに入力してもらうなら、各人でシートを分けないほうが、後ですぐにいろいろ使えて便利かもしれませんね。参考URLをご覧になってみてください。
お礼
回答ありがとうございます。 人が多いのでなかなかシートを作るのが難しく・・・ もう少し悩んでみます。
- keithin
- ベストアンサー率66% (5278/7941)
ん? ご相談を出しなおすのは全然構いませんが、その際は前のご質問は放置せず、解決で閉じる操作を忘れずに行っておいてください。 >出勤と退社の時刻を社員自身に入力して貰う事になりました。 あなたが自分で使うんじゃなくしたのでしたら、次のように仕込みます。 1.あなたが作成した画像の通りの配置でエクセルを作成する シート名はSheet1にする 2.ALT+F11を押す 3.現れた画面で挿入メニューから標準モジュールを挿入する 4.現れたシートに下記をコピー貼り付ける sub auto_open() dim d as date worksheets("Sheet1").select application.screenupdating = false activesheet.protect userinterfaceonly:=true cells.locked = true on error resume next for d = range("O3")+1 to date range("E:P").copy range("C1") range("O3") = range("O3") + 1 range("O5:P9999").specialcells(xlcelltypeconstants).clearcontents next d range("O:P").locked = false application.screenupdating = true end sub 5.ブックを名前を付けて保存で、ファイルの種類をマクロ有効形式にして保存し、閉じる 6.ブックを開くと、データが勝手に移動する。 #マクロのセキュリティについて下記を参考にします http://pasofaq.jp/office/excel/excel2007macro.htm >IDを入力すると自分の欄に あれもこれもと詰め込まれたご相談に全部回答する義務は無いので割愛しますが、わざわざIDを記入する手間の内に自分の名前を探して記入してもらった方が簡単です。ご相談で掲示された表にも、「IDを入れる欄」とか用意されていません。
お礼
回答ありがとうございます。 早速試したのですが、なかなか思うようにならず・・・ もう少し悩んでみます。
お礼
回答ありがとうございます。 なかなかいい感じにできました。 ありがとうございました。