• ベストアンサー

エクセル 関数を固定したい

毎日の給与計算でエクセルを使用しています。 関数を使用し、勤務時間などを入れると自動で計算、また何時間以上したらボーナス、交通費がつく等、細かい設定を多々入力しています。 よく誤って、セルの移動、行挿入、削除等してしまい、関数(数式)がめちゃくちゃになってしまいます。 また複数の人が扱う為、できれば関数自体を動かせないように(式を変更できないように?)したいのですが、何か方法はありますでしょうか? 初歩的な質問ですみません。宜しくお願いします。 例)以下のような感じです。  日付  時間 金額 交通費 ボーナス 合計    A    B    C    D     E    F   ・・・ 1 1/10   3   2100    0     0    2100   2 1/11   6   4200   500     0    4700 3 1/15   2   1400    0    1000    2400 4   計    11   7700    500    1000    9200 ・ ・ ※1日の勤務時間が5H以上で、交通費¥500 ※一週間の勤務時間が10H以上でボーナス¥1000 ※それぞれC~F列、4行目は関数(数式?)が入力され、自動で計算されます。 なので、ここを固定したいです。 ただ、月によって、行を増やしたり、減らしたりするので(ボーナス列が二列できたり・・・)、その際には、関数も変更しなければいけません。

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

  • ベストアンサー
  • chie65536
  • ベストアンサー率41% (2512/6032)
回答No.2

>よく誤って、セルの移動、行挿入、削除等してしまい、関数(数式)がめちゃくちゃになってしまいます。 入力を許さないセルは、セルをロックした上、シートを保護して下さい(セルのロックは、シートの保護が行われている場合にのみ有効。シートの保護が行われていないとロックされません) 1.式や関数が入っているなど、入力をさせたくないセルは、選択状態にしてから、書式→セル→保護タブ→ロックにチェックを入れる→OKボタン 2.値を入力しないとならないセルは、選択状態にしてから、書式→セル→保護タブ→ロックのチェックを外す→OKボタン 3.ツール→保護→シートの保護→保護対象の3つともチェックを入れる→シートの保護解除のパスワード入力→同じパスワードを再入力→OKボタン 4.ブックを保存 これで、行や列の挿入や削除、式や関数の変更など、データ入力以外の操作は一切出来なくなります。 >ただ、月によって、行を増やしたり、減らしたりするので(ボーナス列が二列できたり・・・)、その際には、関数も変更しなければいけません。 行や列の挿入や削除、式や関数の変更など、シートを変更する場合は、シートの保護を解除し、変更後、シートを再保護して下さい。 1.ツール→保護→シート保護の解除→シートの保護解除のパスワード入力→OKボタン 2.行や列の追加、削除を行い、式を変更する。 3.行を増やした場合、増やした行で、式や関数が入っているなど、入力をさせたくないセルは、選択状態にしてから、書式→セル→保護タブ→ロックにチェックを入れる→OKボタン 4.行を増やした場合、増やした行で、値を入力しないとならないセルは、選択状態にしてから、書式→セル→保護タブ→ロックのチェックを外す→OKボタン 5.ツール→保護→シートの保護→保護対象の3つともチェックを入れる→シートの保護解除のパスワード入力→同じパスワードを再入力→OKボタン 6.ブックを保存 なお、シートの保護、シートの保護解除には「パスワード」が設定出来るので、式や行の追加削除など、シートの変更を行う人だけに判るパスワードを入れましょう。

yuki696
質問者

お礼

確認が遅くなりました(+_+) すみません!! ご丁寧にありがとうございます。 初心者の私でも、とても分かりやすく、試しにやってみるとばっちりできましたので、今後の給与エクセルに早速役立てようと思います(^^♪ また何かありましたら投稿いたしますので、宜しくお願いします。

その他の回答 (3)

  • chie65536
  • ベストアンサー率41% (2512/6032)
回答No.4

更に訂正。 >ボーナス列が二列できたり・・・ 「列」が増減する場合は、最大限の列を用意しておいて、その列が不要な場合は、セルに「0」を入れて合計値に影響が出ないようにした上、列の表示幅をゼロにしてしまい、見えなくするだけで列の削除はしない、と言う方法を取りましょう。 こうすると「いちいち、月が変わるたんびに、数式や表を手直ししなくて済む」ようになります。

  • chie65536
  • ベストアンサー率41% (2512/6032)
回答No.3

追記。 >ただ、月によって、行を増やしたり、減らしたりするので(ボーナス列が二列できたり・・・)、その際には、関数も変更しなければいけません。 基本的に「行の追加や削除はしないで、必要の無い行は見せない」のがベストです。 つまり、以下のようにします。 ○表を作成する 1行目:見出し 2~34行目:1日から31日までの明細行と、ボーナス用2行 35行目:合計行 A列2行目:「○/01」と、その月の「1日」の日付を入力出来るようにする A列3行目以降:A3に「=A2-1」との式を入れ、31日分まで下方向にコピー、セルをロックする A列33行目:「ボーナス1」と入れてセルをロック A列34行目:「ボーナス2」と入れてセルをロック A列35行目:「合計」と入れてセルをロック B列1行目:「時間」と入れてセルをロックする B列2~34行目:時間を数値で入れられるようにする。セルのロックはしない B列35行目:合計を求める式を入れ、セルをロックする C~F列2~35行目:必要な式、関数を入力し、セルをロックする 表が出来たら、データ→フィルタ→オートフィルタ、でフィルタを設定する。 ○データ入力する前に ・シートの保護を解除する。 ・B1セルの「時間」の横の「▼」をクリックし「(すべて)」を選ぶ。 ・A2セルに「今月の1日の日付」を入れる。3月なら「3/1」など。 ・B2~B34のセルを選び「DEL」キーなどで「空白セル」にする。 ・シートを保護する。 ・保存して閉じる。 ○データ入力する時は ・B2~B34に、勤務時間を入れる。勤務してない日は何も入れず「空白セル」のままにする。ボーナス行は、あるなら「0」を、ないなら「空白セル」のままにする。 ・保存して閉じる。 ○データ入力が終って集計、印刷する時は ・シートの保護を解除する。 ・入力が終ったら、B1セルの「時間」の横の「▼」をクリックし「(空白以外のセル)」を選ぶ。これで「不要な行は見えなくなる」ので、行の挿入や削除は一切しなくて良い事になります。 ・シートを保護する。 ・印刷する。 ・保存して閉じる。 このようにしておくと「行の追加と削除が、一切不要」なので、式さえ上手く作れば「月が変わっても、式の部分は、一切変更しなくても済む」ようになります。 難しいのは「1週間の切れ目をどうするか」だけですが、これは「曜日を求める関数」と「IF関数」を使えば、どうにかなります。

yuki696
質問者

お礼

面白い方法ですね。 この給与エクセルだけに限らず、私が今行っている業務で、いろいろ活用できそうです。 ありがとうございましたm(__)m

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.1

次の方法は如何でしょうか。 (1)編集→ジャンプ→セル選択→定数→OK→背景が反転しているセル上で右クリック→セルの書式設定→保護タブで保護のチェックを外す (2)編集→ジャンプ→セル選択→定数→OK→背景が反転しているセル上で右クリック→セルの書式設定→保護タブで保護・表示しないのチェックをつける (3)ツール→保護→シートの保護→パスワードを入力(2回)

yuki696
質問者

お礼

確認が遅くなりました(+_+)すみません。。 ジャンプ機能!すごいですね!! 初めて知りました。 ありがとうございましたm(__)m

関連するQ&A

  • エクセル VLOOKUP関数について

    関数に詳しくないので、教えてください。 質問(1) 列は、F×G+Hの合計です。 F  G  H  I 40  1  3  43 F列の数字が、11~100ののときのみ、G列に1を入力させ、I列に合計をだしたいのですが、 G列に、現在、 =IF(F6=””,””,VLOOKUP(F6,$L$4:$M$103,2,FALSE)) と数式が入っています。 ちなみに、L列の4~103には、11~100の数字が入っており、M列の4~103には、すべて1の数字が入ってます) が、数式をいれると、合計に、#VALUE!のエラーメッセージがでてしまします。 F列に文字を入力すると、正しく合計が出ますが、F列が、未入力だと、エラーメッセージが出ているので、未入力でも、エラーメッセージがでないいように、するには、どうしたらよいでしょうか? 質問(2) それと、この数式だと、H列だけに数字を入力するだけでは、合計がでなく、エラーメッセージのままです。 H列だけに入力しても、合計のでる数式も教えてほしいです。

  • Excel、関数について(人事)

    Excel、関数について質問です。 お仕事で人事系の事務をしています。 勤務時間の管理のエクセルをつくっています。 A~E列に、毎月の入力で変動する値(勤務時間上限数ー勤務時間の合計数)が入っているとします。 F列にはA~E列の最小値、G列には単月の勤務時間上限数の99:00が入っているとします。 1月~翌3月を表す、H~V列に最小値と99:00を比べて少ない時間数の方を入力しています。 これを現在手作業で毎月行っているのですが(=MIN(F2:G2))、数字の変動に合わせて自動で毎月毎に入力するようにするにはどのような関数を使えばいいでしょうか? 日本語が下手で伝わりづらく申し訳ないのですが、ご教授頂けますと幸いです。 よろしくお願いいたします。

  • エクセル関数の自動表示について

    自動表示についてご質問いたします。 シート1 (3月入力時)       A列  B列  C列  D列  E列  F列  G列  H列 1行目  1月   2  10  11  12  30  31  33 2行目  2月   1   2   5   8   9  10  48 3行目  3月   3   5  10  11  30  31  32 4行目  4月   こういうシート1の表があったとします。 シート1で3月入力した時点で、シート2では以下の表があったとします。        A列  B列  C列  D列  E列  F列  G列   1行目    3   5  10  11  30  31  32 と、自動で表示され。 4月(シート1)に数値を入力すれば、シート2の数値が最新数値に自動で入れ替わる・・・と、いう関数を作りたいのですが、いい関数ありますでしょうか? この場合、シート1ではB列~H列の数字の個数は固定(今回は7個)であり、毎回ランダムで数字が入力されていきます。 これをシート2の1行目、A列~G列に最新数値を毎回反映させて、表示したいのです。 どなたか、ご存知の方よろしくお願いします^^;

  • エクセルの関数の数式がわかりません。

    A列 B列 1 10 2 20 3 30 a 4 40 エクセルの関数の数式がわかりません。 B1~B4のどこかにaの入力があった場合、aの入力がある行と同じ行のA列に入力されている数字を別のセルに表示させたいです。 例えば、上記のようにB3にaがあるので、A3の30を、別のセルに自動で30と出るようにしたいです。 B列には、ランダムにaを入力しますので、aが別の行にある場合もあります。 この場合の数式を教えてください。 よろしくお願い致します。

  • Excelの関数を用いた計算に関しての質問です。

    Excelの関数を用いた計算に関しての質問です。 A1:F10の範囲の60個のセルにそれぞれ1~9の数字がランダムに入力されています。 G1とH1に異なる任意の数字を入力し、1から10の列のうちから G1とH1の数字が両方とも入力されている行の数を算出したいのですが、 よい計算方法が分かりません。 どなたか私にご教示いただけたら幸いです。

  • EXCEL COUNT関数で

    EXCEL COUNT関数で A列の1-10行目まで文字や数字なにかを入力したら セルA11に何行入力したかを自動計算させるようCOUNT関数を挿入しました。 例えば A1:123 A2:45-6 A3:ABC 上記は3行入力してるので3と表示させたいです。 だけどA2:45-6のように-があると計算せず2とでます。 なぜでしょうか? 宜しくお願い致します。

  • Excelセル関数入力

    セルC2の合計がF1の数値と同じになるようにセルB4に数式を入力したいのですが。D列が数式となります。尚、F1の値は都度手入力で変更されます。数式を何度か入れたのですが数値がちぐはぐになりうまくいきません。B4に入力する関数もしくは何か良い方法はないでしょうかよろしくお願いします。

  • エクセルで勤務時間の開始・終了を入力すると自動的に計算する勤怠システム

    エクセルで勤務時間の開始・終了を入力すると自動的に計算する勤怠システムの 数式を教えてください。 例 8:00から18:00まで勤務した場合。時給1,000円 (1)7時間以上勤務する場合、自動的に休憩1時間が入力される数式(E4の数式) (2)勤務時間は8時間を越えない。超えた場合は残業につく(F4の数式) (3)勤務時間が8時間を超えた場合、自動的に残業1時間が入力される数式(G4の数式) (4)給料は残業(昼間のみ)25パーセント増しを含んで15分毎に計算する数式(H4の数式) ※黄色の欄です。 ※時給欄をK1に設けた場合とします。 分かる方、ご教示何卒よろしくお願い致します。

  • エクセルの関数について

    エクセルの関数について お世話になります。 エクセルの関数について質問をさせて頂きます。 チェック用の数式として、下記のような場合、 D2とH行に同じ数字があった場合はA2に○を この場合、 =IF(ISNA(MATCH(D2,H:H,0)),"","○") このような数式を使っております。 この数式を少しアレンジして、 D2とH行に同じ数字があった場合はA2に○を、 D2とI行に同じ数字があった場合はA2に×を、 このような数式を作りたいと考えております。 また、 I2とD列に同じ数字があった場合、J2に空白、 同じ数字が無かった場合に×が入る数式として、 [J2]=IF(ISNA(MATCH(I2,D:D,0)),"×","") このようなものを使っています。 こちらも少しアレンジをして、 I2もしくはH2とD列に同じ数字があった場合、J2に空白、 同じ数字が無かった場合に×が入る。 このような数式を作りたいと考えております。 こちらの2点、中々良い数式ができずに悩んでおります。 どなたか、エクセルの関数に詳しい方、良いアドバイスを 頂けると嬉しいです。 どうぞよろしくお願い致します。

  • Excel IF関数の使い方

    ExcelでIF関数を使えばいいのは分かっているのですがどう使ったらいいのかが分かりません。 勤務表をExcelで作っていて、所定内勤務時間を計算したいです。 A列に休み区分、B列に始業時間、C列に終業時間、D列に所定内勤務時間が入っています。 A列に「半休」と文字が入った場合 始業時間8:30、終業時間12:00 と入力したら、自動的に所定内勤務時間を3:30 始業時間12:45、終業時間17:00 と入力したら、自動的に所定内勤務時間を4:15 A列に何も入らなかったら終日勤務で、所定内勤務時間を7:75と表示させたいです。 =IF(AND(A1=半休,B1=TIMEVALUE("8:30"),"3:30"),???) ここまでは分かるのですが???以降が分からないです。 どなたか教えていただけないでしょうか? よろしくお願いいたします。

専門家に質問してみよう