インターネットで個人の方が公開しているエクセルのワークシートをダウンロードしてきました。勤務時間を計算するものなのですが、それをアレンジして自分流に使いたいと考えているのですが、どこを見ても計算式が入力されていないのに、所定位置に出社時間・退社時間を入力すると実勤務時間が計算されて表示されているんです。

そこで
・どうしたらこういったことが可能なのか
・実際に使われている計算式を見ることは可能なのか
を教えてください。

このQ&Aに関連する最新のQ&A

A 回答 (3件)

通常の手段で、マクロを使用しない方法として


セルの書式で保護の項目を「ロック」「表示しない」にチェックして、ツール→保護で「シート保護」の設定をすれば、計算式は見えません。
また、入力シートと計算シートを別に作り、計算シートを「非表示」に設定することも可能です。

ツール→保護とたどって、保護の解除でパスワードの入力を求められなければ、アレンジ可能ですが、作成者の意図に添わない改ざんを許可しないようパスワードを設定していることは考えられますね。
いずれにせよ、自身で使われる分には、多少のアレンジは可能かと思いますが、ファイルの再配布などは行わないよう配慮が必要です。
    • good
    • 0
この回答へのお礼

ご指摘のとおり、保護されており、残念ながら参考にすることが出来ませんでした。
ご回答ありがとうございました。

お礼日時:2001/11/30 07:15

>どうしたらこういったことが可能なのか


マクロを作って、セルの値が変わったら計算して該当のセルにかき出すことで可能です。
例えば、下記マクロは、A、B列に数値を入力したら、A列セル-B列セルをC列に書き出します。(Sheet1を使用)
ツール→マクロ→Visual Basic Editor でVBE画面に移り、Sheet1のコードウインドウに貼り付けます。

>実際に使われている計算式を見ることは可能なのか
VBE画面に移り、プロジェクトエクスプローラを出して、シートのコードやモジュールのコードが表示されれば見ることができるでしょうが、普通は保護がかけてあり、パスワードの入力が必要になるのではないでしょうか。

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
  On Error GoTo errorHandler

  If Target.Count = 1 Then
    If Target.Column = 1 Then 'A列を変更した場合
      If IsNumeric(Target.Offset(0, 1)) And Target.Offset(0, 1) <> "" Then
        Target.Offset(0, 2) = Target.Value - Target.Offset(0, 1)
      End If
    ElseIf Target.Column = 2 Then 'B列を変更した場合
      If IsNumeric(Target.Offset(0, -1)) And Target.Offset(0, -1) <> "" Then
        Target.Offset(0, 1) = Target.Offset(0, -1) - Target.Value
      End If
    End If
  End If

  Exit Sub

errorHandler:

End Sub
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
しかしながら私の理解力を越えており・・・
精進します。
またよろしくお願いします。

お礼日時:2001/11/30 07:17

はじめまして。



御質問の内容ですが、
>どうしたらこういったことが可能なのか

マクロ、VBAを使用されているのだと思います。
ツール→マクロ→VisualBasic Editerを開くと確認できるかと思います。

>実際に使われている計算式を見ることは可能なのか
多分、パスワードがかかっているので中身は見れないと思いますが、パスワードがかかっていなければ、見ることは可能です。見れたとしても、VisualBasicかマクロを知らないと解らないかと思います。

Excelのヘルプに載っていますので一度御覧下さいませ。
それではこれでm(__)m
    • good
    • 0
この回答へのお礼

どうやらVBA等ではなく、#2のお答えの通り、保護されていたようです。結局中身は見れませんでした。
回答ありがとうございました。

お礼日時:2001/11/30 07:13

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qエクセルの勤務計算で一部の時間を省く計算式は?

エクセルで勤務管理表を作りました。
1日何時間働いたか、タイムカードの時間を打ち込み
月間で管理する表です。

だいたいは出来たのですが、1点難問が・・・。
基本は9:00-17:00勤務なので
(昼45分差し引き)計7:15分です。
残業が17:16~しかつかないんです。
(17:00~17:15は残業とみなさない)
つまり・・・17:15までですと勤務計は7:15分。
      17:16までですと勤務計は7:31分です。
これを考慮した計算ができる式を教えていただけないでしょうか?
    A1       B1      C1       D1
(退社時間-出社時間)-昼時間=1日の勤務時間

上記のことがあるので
「D1」セルに正しい勤務計を出すことが出来ないんです。
 17:01~17:15は省く・・・みたいな。計算式が必要なんでしょうか?

Aベストアンサー

#1さんの方法だと17:00に退社した人の勤務時間が7時間になりますが、質問者の意図は違うように思います。
以下の方法はどうでしょう。
E1に17:00という定時退社時刻を入れておく。
F1に残業発生時刻である17:15を入れておく。
G1に=IF(AND(A1>E1,A1<=F1),E1,A1)という式を入れて17:00以降17:15までの退社であれば17:00退社と強制的にみなすための工夫をする。
    G1       B1      C1       D1
(みなし退社時間-出社時間)-昼時間=1日の勤務時間
となるわけです。

QExcel:勤務時間計の計算式がうまくいかない

Excel2002を使用し、勤務表を作成しています。
以前こちらでアドバイスをいただき、作成することができました。
今回修正で、開始8:30終了17:05の場合、休憩45分、当日勤務時間7時間
50分と計算させたいのですが、何かアドバイスあればよろしくお願いし
ます。

現在使用している計算式では以下のように計算されます。
開始8:00終了16:35の場合、休憩45分、当日勤務時間7時間50分
開始8:30終了17:05の場合、休憩60分、当日勤務時間7時間35分

■8時-16時35分(定時)の場合
開始時刻:C列
終了時刻:D列
開始時刻を15分単位で切り上げる:P列:=CEILING(C7,"0:15")
終了時刻を15分単位で切り上げる:Q列:=CEILING(D7,"0:15")

■休憩時間
=IF(COUNT(C7:D7)<2,0,IF((P7<"12:30"*1)*(Q7>"13:15"*1),"0:45","0:
00"))+IF(D7>="16:50"*1,"0:15","0:00")

休憩時間は12:30から13:15までの45分。
終了時刻が16:35以降なら15分の休憩時間が加算。
開始、終了が入力されていないと0:00表示。

■当日 勤務時間
=AND(C6*D6)*(MIN(IF(AND(D6>="12:30"*1,D6<="13:15"*1),"12:30",Q6),
"16:35")-MAX(IF(AND(C6>="12:30"*1,C6<="13:15"*1),"13:15",P6),"08
:00")-IF((P6<"12:30"*1)*(Q6>"13:15"*1),"0:45","0:00")+FLOOR(MAX
(D6,"16:50")-"16:49:59","0:15"))

開始、終了が入力されていないと空白
12:30~13:15の場合は12:30、16:35以降の場合は16:35、それ以外は終
了時刻のまま。
8:00以前は8:00、12:30~13:15の場合は13:15、それ以外は開始時刻の
まま。
残業していないケースをIF文を使わずに計算したいため終了時刻が
16:50以前の場合は16:50と補正して、計算結果が00分になるように細工


言葉足らずでしたら、進んで補足させていただきますので、よろしくお
願いします。

Excel2002を使用し、勤務表を作成しています。
以前こちらでアドバイスをいただき、作成することができました。
今回修正で、開始8:30終了17:05の場合、休憩45分、当日勤務時間7時間
50分と計算させたいのですが、何かアドバイスあればよろしくお願いし
ます。

現在使用している計算式では以下のように計算されます。
開始8:00終了16:35の場合、休憩45分、当日勤務時間7時間50分
開始8:30終了17:05の場合、休憩60分、当日勤務時間7時間35分

■8時-16時35分(定時)の場合
開始時刻:C列
終了時刻:D...続きを読む

Aベストアンサー

休憩時間を原則45分として計算したものを<労働時間>、
<労働時間>が8時間以上の場合にそこから15分を差し引いたもの(8時間未満の場合にはそのまま)を<勤務時間>とする(つまり、<勤務時間>は<労働時間>の関数である)、
というふうに理解していいですか?

それでいいなら、勤務時間フィールドと労働時間フィールドとを分けることをおすすめします。
ダイレクトに勤務時間を求めるとなると、式が異常に長くなるからです。

以下、修正を必要最小限にとどめたやり方をご紹介します。

■当日勤務時間→労働時間
「+FLOOR(MAX(D6,"16:50")-"16:49:59","0:15")」の部分を
「+FLOOR(MAX(D6,"16:35")-"16:34:59","0:15")」に変更する。
(「勤務時間」ではなく)「労働時間」を求める式になります。

■勤務時間(新たに列を作る)
労働時間を求める式が入ったセルを「●」とすると、
「=IF(●>="8:00"*1,●-"0:15",●)」。
※●の部分に労働時間を求める式を入れると、ダイレクトに勤務時間を求める式になります。

■休憩時間
後半「+IF(D7>="16:50"*1,"0:15","0:00")」の部分を
「+IF(●>="8:00"*1,"0:15","0:00")」に変更。

休憩時間を原則45分として計算したものを<労働時間>、
<労働時間>が8時間以上の場合にそこから15分を差し引いたもの(8時間未満の場合にはそのまま)を<勤務時間>とする(つまり、<勤務時間>は<労働時間>の関数である)、
というふうに理解していいですか?

それでいいなら、勤務時間フィールドと労働時間フィールドとを分けることをおすすめします。
ダイレクトに勤務時間を求めるとなると、式が異常に長くなるからです。

以下、修正を必要最小限にとどめたやり方をご紹介します。

■当日勤...続きを読む

QExcel関数での勤務時間並びに残業、深夜残業時間の計算方法

[A1]出社時間 9:00
[B1]退社時間 23:45
の値から
かなりややこしい条件があるのですが。。。
昼休憩が1時間
勤務時間が8時間で15分の休憩(9:00出社の場合18:00~18:15)
勤務時間が10時間で15分の休憩(9:00出社の場合20:15~20:30)
休憩時間は結果から引いている
出社時間には変動があります。
出社時間にかかわらず夜間作業は22:00以降となってます(退社時間が22:15に0.25)

これらの条件で
[C1]総稼動時間 13.25
[D1]時間外 5.25
[E1]夜間作業 1.75
を出せる関数を教えていただきたいのです。出来れば出社、退社に時間が入ってない場合はそれぞれ空白になるようにしていただきたいです。
ややこしいことを質問していますが、よろしくお願いします。

Aベストアンサー

●「勤務時間が8時間で」を、「昼休憩を除く勤務時間が 8 時間に達した時点で」という
 意味に捉えました。
●「総稼動時間」にも休憩は含まないと解釈しました。
●「総稼動時間」のうち 8 時間を超えた部分を「時間外」とするものと解釈しました。
●「夜間作業」も「総稼動時間」の内数(うちすう)であると解釈しました。

添付図に記入している数式は、下のとおりです。

なお ROUND 関数を適用しているのは、「オートフィルや数式で作製された時刻データを扱う場合などに小数点第 14 位、15 位あたりに発生するケースがある計算誤差」を補正するためです。小数点以下に 7 桁を残せば、0:01 単位で時刻を記録して日給 100,000 円であっても、誤差 1 円未満になると考えられます。

C3 =(b3-a3)/"1:00"
D3 12:00 など
E3 =min($B3,d3+"1:00")
F3 =($C3>1+8)*($A3+"1:00"+"8:00")
G3 =min($B3,($C3>1+8)*($A3+"1:00"+"8:15"))
H3 =($C3>1+0.25+10)*($A3+"1:00"+"0:15"+"10:00")
I3 =min($B3,($C3>1+0.25+10)*($A3+"1:00"+"0:15"+"10:15"))
J3 =round(c3-sum(e3-d3,g3-f3,i3-h3)/"1:00",7)
K3 =max(0,j3-8)
L3 =round(max(0,b3-"22:00")/"1:00",7)

●「24:00 以後の時刻を表示する可能性のある列」のセルの書式は、「h:mm」ではなく、
 「[h]:mm」を設定してください。
 「セルの書式設定 > 表示形式タブ > ユーザー定義 > 種類ボックス」に書式記号を
 入力します。
●退社が翌日になったときは、午前 1 時であれば 25:00 というふうに記入してください。
●ゼロであるセル(「0.00」、「0:00」)を空白(のような見かけ)にするには、
 「ゼロ以下の値のみを非表示にするセルの書式」として、「0.00;;」、「h:mm;;」、
 などをセル範囲に設定しておきます。
 操作の方法は、「退社時間」の書式と同じです。
● J 列などに数式を記入した瞬間に、そのセルの書式が勝手に時刻になってしまう
 ことがありますが、気にせず「0.00;;」などを設定すれば、正常な値が表示されます。

●「勤務時間が8時間で」を、「昼休憩を除く勤務時間が 8 時間に達した時点で」という
 意味に捉えました。
●「総稼動時間」にも休憩は含まないと解釈しました。
●「総稼動時間」のうち 8 時間を超えた部分を「時間外」とするものと解釈しました。
●「夜間作業」も「総稼動時間」の内数(うちすう)であると解釈しました。

添付図に記入している数式は、下のとおりです。

なお ROUND 関数を適用しているのは、「オートフィルや数式で作製された時刻データを扱う場合などに小数点第 14 位、15 位あたりに...続きを読む

Qアチ こんにちは。 エクセルで勤務時間と深夜時間の管理をしているのですが、不定期の休日のところで勤務

アチ
こんにちは。
エクセルで勤務時間と深夜時間の管理をしているのですが、不定期の休日のところで勤務時間のセルがマイナス時間になります。ならないためにはどう入力すればよいのですか、教えてください。お願いしますか

Aベストアンサー

日付を含めた時間を使って計算するようにすると回避ができる。
例:="2016/1/29 12:00"-”2016/1/28 22:00"

・・・
休日をどのように処理をしているのか質問文からは全く見えませんので、一般的な回答をしてみました。
全体の処理をこのやり方に作り直すことでエラーの原因を把握しやすくなり、訂正も楽になると思います。

Q残業時間の計算をするにはどのような関数あるいは計算式を設定すればいいの

残業時間の計算をするにはどのような関数あるいは計算式を設定すればいいのですか?
私、エクセルについてはまったくの初心者です。よろしくお願いします。

(例)
       A      B
 
1行目 出勤時間  9:00

2行目 退社時間  19:30

3行目 残業時間  2:00 ←ここの計算式を教えていただきたいのです。

             ※ ただし、定時の終了時間は17:30で、拘束時間は休憩時間を含めて
               8:30とした場合でお願いします。

Aベストアンサー

勤務時間=退社時間-出勤時間
残業時間=勤務時間-8:30
で数式を組み立てると

残業時間 B3=IF(OR(B1>0,B2>B1),MAX(B2-B1-"8:30",0),"")

時間を30分単位で切り捨てにする場合
残業時間 B3=IF(OR(B1>0,B2>B1),FLOOR(MAX(B2-B1-"8:30",0),"0:30"*1),"")


このカテゴリの人気Q&Aランキング

おすすめ情報