Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


9561 / 13644 ツリー ←次へ | 前へ→

【26569】出勤管理表作成について yon 05/7/10(日) 16:44 質問[未読]
【26571】Re:出勤管理表作成について Ny 05/7/10(日) 17:42 発言[未読]
【26606】Re:出勤管理表作成について りん 05/7/11(月) 22:40 発言[未読]
【26675】Re:出勤管理表作成について Ny 05/7/13(水) 21:40 回答[未読]

【26569】出勤管理表作成について
質問  yon  - 05/7/10(日) 16:44 -

引用なし
パスワード
      A  B  C  D   E  
1  日付 出勤 退勤    労働時間
2 7月1日 900 1700     800
3 7月2日 2000  400     800
4 7月3日
5



31          平均  8時間
32          合計 16時間


上記表を利用しています。
2点質問があるのですが
1、時間入力にて"900"と入力すると自動で9:00へ変換するには
2、出勤20:00、退勤が翌日4:00の場合の労働時間を算出するには

これをマクロで設定するにはどうすればよいでしょうか?
ご指導宜しくお願いします。

【26571】Re:出勤管理表作成について
発言  Ny  - 05/7/10(日) 17:42 -

引用なし
パスワード
   ▼yon さん:

今晩は、
マクロのコードの前に時間のシリアル値に付いて
少し理解を深められるとシート関数でも処理できると
思いますよ。

http://www.h3.dion.ne.jp/~sakatsu/WorkingTimeCalc.htm

>1、時間入力にて"900"と入力すると自動で9:00へ変換するには
出来ますが、時間のシリアル値でなくなります
→書式設定で・・・00":"00

【26606】Re:出勤管理表作成について
発言  りん E-MAIL  - 05/7/11(月) 22:40 -

引用なし
パスワード
   yon さん、Ny さん、こんばんわ。

>マクロのコードの前に時間のシリアル値に付いて
>少し理解を深められるとシート関数でも処理できると
>思いますよ。

>   A  B  C  D   E  
>1  日付 出勤 退勤    労働時間
>2 7月1日 900 1700     800
>3 7月2日 2000  400     800
>1、時間入力にて"900"と入力すると自動で9:00へ変換するには
>2、出勤20:00、退勤が翌日4:00の場合の労働時間を算出するには

同じく、マクロじゃないですが。
F〜H列の数値の書式を時刻にして、
[F2] に
=TIMEVALUE(SUBSTITUTE(TEXT(B2,"0-00"),"-",":"))
[G2] に
=TIMEVALUE(SUBSTITUTE(TEXT(C2,"0-00"),"-",":"))
[H2] に
=IF(F2>G2,G2-F2+1,G2-F2)

【26675】Re:出勤管理表作成について
回答  Ny  - 05/7/13(水) 21:40 -

引用なし
パスワード
   こんばんわ。Nyです。
置き換えの関数、勉強になりました。

勤務時間の計算を一寸書いておきます。
マクロではない、一般的な関数の使い方です。

深夜計算は一般的に次のようにしています。
勿論、この方法は深夜でない場合でも使えます。
作業スペースを作ります
  A    B   C   D   E   F
1 
2日時  出勤  退勤  実働(空き) 深夜計算用
3
4

F3に次の式を入れます
=if(B3<=C3,C3,C3+1)・・・・・・深夜をまたがると、シリアル値1を足します。
D1(実働)に次の式を
=F3-B3
因みに、F1には4:00、実働には8:00と回答が出ます。
式を4行目以降にコピーでOKです。

1が24時間ですので、給与計算の時は必ず24倍して計算をしないと
計算が狂います。
書式の設定で6:00を標準で見られると0.25とでます。
つまり12:00は0.5です。
又、時間の合計はセルの書式設定⇒ユーザー設定で⇒[h]:mm
にして24:00を超える時に対処する事が必要ですのでご留意を。


勉強になりました。
 ↓ ↓
>同じく、マクロじゃないですが。
>F〜H列の数値の書式を時刻にして、
>[F2] に
>=TIMEVALUE(SUBSTITUTE(TEXT(B2,"0-00"),"-",":"))
>[G2] に
>=TIMEVALUE(SUBSTITUTE(TEXT(C2,"0-00"),"-",":"))
>[H2] に
>=IF(F2>G2,G2-F2+1,G2-F2)

9561 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free