• ベストアンサー

再びEXCELの関数教えてください。

1ヶ月のカレンダーを作成しています。 カレンダーの様式は一行が一週間で月曜日に始まり日曜日に終わっています。 例えば11月なら1行目は1日が「E,3・4」のセルになります。4日は「A,5・6」のセルになります。 一日が2行あるのは上の行には日付を、下の行には入力したい数情報を入れるためのセルです。このようなカレンダーに毎日残業時間を入力していきます。 残業時間は午後5時以降からです。これは不変です。午後10時まで「普通残業」午後10時以降は「深夜残業」になります。これも不変です。 そこで例えば、11月1日に午後8時まで残業した場合は、1日と表示しているセルの下のセルに「3」と入力します。 するとカレンダーの11月の下の方に「普通残業合計」「深夜残業合計」とそれぞれ表示されたセルがあり、「普通残業合計」のところに「3」と表示させたいのです。 次に11月2日に午後11時まで残業したとします。 カレンダーの2日と表示されているセルの下のセルに「6」を入力します。 すると先程の11月の下の方の「普通残業合計」は1日の「3」と2日の「5」を足した「8」と表示され、「深夜残業合計」には「1」と表示させたいのです。 以下同じようにそれぞれの日付に残業した時間だけ数字を入力していき、普通残業時間、深夜残業時間、それぞれ表示させたいのです。 どのような関数を使用すると毎日その日付のところに数字を入力するだけでそれぞれの合計が出るでしょうか。 宜しくお願い致します。 なお数式の入力の仕方ですが「( )」や「 、」などは必ず入れなければならないですよね。その場合大文字ならば不可とかあるのでしょうか? せっかく教えてもらってもその辺が分からずエラーになる場合があるかもしれませんので詳しく教えてもらえれば是幸いです。

  • shu666
  • お礼率84% (223/264)

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

  • ベストアンサー
  • peso
  • ベストアンサー率41% (40/97)
回答No.3

次の式をコピーしてそのまま貼り付けてみてください。 ・普通残業合計 =SUMIF(A4:G4,"<=5",A4:G4)+COUNTIF(A4:G4,">5")*5+SUMIF(A6:G6,"<=5",A6:G6)+COUNTIF(A6:G6,">5")*5+SUMIF(A8:G8,"<=5",A8:G8)+COUNTIF(A8:G8,">5")*5+SUMIF(A10:G10,"<=5",A10:G10)+COUNTIF(A10:G10,">5")*5+SUMIF(A12:G12,"<=5",A12:G12)+COUNTIF(A12:G12,">5")*5+SUMIF(A14:G14,"<=5",A14:G14)+COUNTIF(A14:G14,">5")*5 ・深夜残業合計 =SUMIF(A4:G4,">5",A4:G4)-COUNTIF(A4:G4,">5")*5+SUMIF(A6:G6,">5",A6:G6)-COUNTIF(A6:G6,">5")*5+SUMIF(A8:G8,">5",A8:G8)-COUNTIF(A8:G8,">5")*5+SUMIF(A10:G10,">5",A10:G10)-COUNTIF(A10:G10,">5")*5+SUMIF(A12:G12,">5",A12:G12)-COUNTIF(A12:G12,">5")*5+SUMIF(A14:G14,">5",A14:G14)-COUNTIF(A14:G14,">5")*5 前回の回答では1行、あるいは1列のみ対応でしたので、多少修正しました。 ただ、この式をこのままコピーして貼り付けるとなぜか数行、セルが結合されますので、手動で戻すか、一旦メモ帳などに貼り付けてからそれをコピーしてExcelに貼り付けてください。

shu666
質問者

お礼

今回も本当にありがとうございました。 BINGO!です。pesoさんのおかげで解決いたしました。 もうなんてお礼を申し上げていいか、涙が出てきそうです。 本当に感謝しております。20点なんて足りなすぎるくらいです。 やっと来年度から導入できそうです。 ありがとうございました。

その他の回答 (5)

回答No.6

ちょっとだけ簡単に出来ます。 深夜残業合計の方は =SUM(A4:G4)+SUM(A6:G6)+SUM(A8:G8)+SUM(A10:G10+SUM(A12:G12+SUM(A14:G14)-普通残業合計 でいいですよね。

shu666
質問者

お礼

回答ありがとうございます。 なるほどその手もありましたね。 でも本当に皆様の暖かいご指導のもと、ちょっとEXCELを理解できたような気がします。 本当にありがとうございました。

  • hinebot
  • ベストアンサー率37% (1123/2963)
回答No.5

何度も済みません。pesoさんの回答の意味が分かりましたので説明します。とその間にpesoさん自らが数式を示してくれましたね。 まず、普通残業合計 =SUMIF(A4:G4,"<=5",A4:G4)+COUNTIF(A4:G4,">5")*5 についてです。(以下は、行をまたいでいるのを全部足しているだけですのでここまでの説明でokかと。) ・SUMIFの部分は、「範囲A4~G4の中で5以下の部分を合計しなさい」 ・COUNTIFの部分はCOUNTIFが「範囲A4~G4の中で5より大きい(6以上)の部分の個数を求めなさい」で、*5がついてるので、それを5倍する、つまり「範囲A4~G4の中で6以上の部分の個数を求め、それを5倍しなさい」ということになります。 それを足すことにより、普通残業合計になります。(足し算をしないと深夜残業をした日の普通残業分の時間がカウントされないからです。) 次に深夜残業合計 =SUMIF(A4:G4,">5",A4:G4)-COUNTIF(A4:G4,">5")*5 (以下については普通残業合計のときと同じです。) ・SUMIFの部分は「範囲A4~G4の中で5より大きい(6以上)部分を合計しなさい」 ・COUNTIFの部分は「範囲A4~G4の中で5より大きい部分の個数を求め、それを5倍しなさい」となります。 SUMIFの結果から、COUNTIFの結果を引くことにより、深夜残業合計になります。(引き算がないと、深夜残業をした日の総残業時間となってしまいます。) 最後にSUMIF関数に範囲が二つあることについてですが、 SUMIF(範囲1,条件,範囲2) のとき「範囲1」は条件を満たすものを検索する範囲、「範囲2」は合計を出す範囲になります。普通は範囲1=範囲2で使うことが多いと思います。 これで、ご理解いただけたでしょうか。

shu666
質問者

お礼

詳しい説明ありがとうございます。 ハイ,理解しました。 何とか無事に解決できました。

  • p-leisure
  • ベストアンサー率38% (7/18)
回答No.4

ちょっと手を離している間にいろんな回答が寄せられていますが、 私なりの回答を・・・ 内容が複雑すぎるので、簡単なところから・・・ まず、「( )」や「、」は、自動的に半角になります。ご存じかと思いますが。 次に、関数名やセル名も、自動的に大文字になります。 日本語入力をoffにしていれば、全く問題はありませんが・・。 セル名を書く時は、「E3:E4」と書きましょう。 ちなみに、日付・普通残業・深夜残業を入力する為に、1日は3行必要ですよね? 4日がA列であるならば、日曜に始まり土曜で終わるのですよね? シートの1行目と2行目をあけてらっしゃるようなので、 第一週が、日:A3:A5,月:B3:B5・・・土:G3:G5となるでしょう。 通常6段あれば一ヶ月は足りますので、最下段(最終週)は、日:A18:A20,月:B18:B20・・・土:G18:G20となるでしょう。 11月2日の残業は、普通5と深夜1ですよね? B22に普通残業の合計を取れば、 =SUM(A4:G4)+SUM(A7:G7)+SUM(A10:G10)+SUM(A13:G13)+SUM(A16:G16)+SUM(A19:G19) B23に深夜残業の合計を取れば、 =SUM(A5:G5)+SUM(A8:G8)+SUM(A11:G11)+SUM(A14:G14)+SUM(A17:G17)+SUM(A20:G20) となります。 今までの方の回答は、普通残業と深夜残業を自動で振り分ける高度な方法みたいですね。 さすがです。

shu666
質問者

お礼

回答ありがとうございます。 また沢山の方から回答をいただき本当に感謝しております。 一人ずつ順番にお礼を申し上げたいのですが、今ざっと目を通してみてまず初めにp-leisureさんからお礼の言葉を書き込みたいと思います。 と言うのも、また私の説明が不足していた為にp-leisureさんには誤解をさせてしまっていたからです。本当に失礼致しました。 >日付・普通残業・深夜残業を入力する為に、1日は3行必要ですよね? いえ、2行でいいんです。1行目に日付2行目にその日の総残業時間を入れるのです。 >4日がA列であるならば、日曜に始まり土曜で終わるのですよね? 申し訳ございません。私の勘違いでした。壁にかかっているカレンダーを見ながら質問文を作成していましたのでずれてしまいました4日ではなく5日でした。 でも作成要領、入力要領に関して詳しく教えていただいて本当にありがとうございました。 >今までの方の回答は、普通残業と深夜残業を自動で振り分ける高度な方法みたいですね。 そのとおりなんです。上司から依頼されたのはまさに自動で振り分ける方法を申されましてそれで困っていた次第でございます。

  • hinebot
  • ベストアンサー率37% (1123/2963)
回答No.2

済みません。先の回答の最初の一文 >参考URL(あなたが以前された質問ですね)の#3のpesoさんの回答でよろしいかと思います は無視してください。勘違いしてまして、pesoさんの回答をよくよく見ると、私にもよく分かりませんでした。 で、私ならこうします。結論としてワンクッション置きます。 先ず、先の質問の#1のKODAMARさんの回答そのままですが、総残業時間から各日の普通残業時間と深夜残業時間を出してしまいます。もう一度書くと、 総残業時間が入ったセルをE4とし、 普通残業時間をセルJ1 深夜残業時間をセルK1に入れるとすると J1のセルには =IF(E4>5,5,E4) K1のところには =IF(E4<5,0,E4-5) とします。 (KODAMARさんの回答にある、「=E4-5」では、マイナスの数値が出てしまいますので、少し変えました。) この要領で、J1~J31、K1~K31まで作ります。(ちょっと面倒ですが) で、最後に普通残業合計を入れるセルに SUM(J1:J31) 深夜残業合計を入れるセルに SUM(K1:K31) とすれば良いわけです。 下手に、一つの関数で済ませようとするより、このようにワンクッション置く方が初心者(失礼)には間違いがないかと思います。

shu666
質問者

お礼

回答ありがとうございました。 確かにその要領でやれば各合計は出ると思います。 私も難しかったので上司に分けて入力する方法を提案したのですが却下されてしまいまして・・・ でもやっと解決いたしました。 本当にありがとうございました。

  • hinebot
  • ベストアンサー率37% (1123/2963)
回答No.1

参考URL(あなたが以前された質問ですね)の#3のpesoさんの回答でよろしいかと思います。 >なお数式の入力の仕方ですが「( )」や「 、」などは必ず入れなければならないですよね。その場合大文字ならば不可とかあるのでしょうか? 「大文字」と仰っているのは、全角・半角のことかと思います。 関数を入力する場合は、必ず、半角の記号を使います。 「、」(読点)は関数入力には使用しません。使うのは「,」(コンマ)ですね。入力モードを半角英数か、直接入力にしてから入力すると間違いないでしょう。 あと、行が複数にまたがっているので、各行ごとに小計の欄を設け、その小計の合計を「普通残業合計」「深夜残業合計」欄に反映させるようにされた方がうまくいくと思います。 念の為ですが、範囲の入力は「A6:G6」のように入れます。言葉で書くと「範囲の左上:範囲の右下」です。(もちろん、全部半角で入力します。)

参考URL:
http://oshiete1.goo.ne.jp/kotaeru.php3?q=165744

関連するQ&A

  • EXCELの関数を教えてください

    EXCEL2000を使用しています。 カレンダーを作成しています。その中に残業時間を日々入力していって最終的に月の残業時間を合計で出します。 そこまではいいのですが、残業時間を二つの種類に分けたいのです。 内容は 午後5時以降から残業タイムになります。 午後10時までは普通残業です。 午後10時以降から深夜残業となります。 そこで例えば 午後11時まで残業した場合その日の入力時間は「6」と入力します。 別のセルに「普通残業合計」「深夜残業合計」と分けて設定します。 それぞれに「普通残業合計」に「5」、「深夜残業合計」に「1」とそれぞれ自動に入るようにしたいわけです。 そしてそれぞれの残業時間も日々足ささっていくという設定にしたいのですが。 どのような関数をどのように設定すれば良いのか、詳しく教えていただきたいのですが。 なにとぞ宜しくお願い致します。

  • EXCELの関数について教えてください。

    エクセルの関数?で2点質問があるのですが、お教えください。 残業時間の計算をエクセルで行いたいと思っています。 例えば、手入力でA1のセルに出社時間、 A2のセルに退社時間を入力すると 自動的にA3のセルに残業時間を表示させたい場合、 どういう関数?を書けばよいのでしょうか? ちなみに一日の勤務時間は、7:30で、 休憩時間が、1:00です。 ですので、例えば9:00~20:00まで働いた場合、 2:30の残業になります。 もう1点あるのですが、毎日その残業時間を 1日1行で記録していって、残業時間の合計を 表示させてたいのですが、残業の合計時間が 10時間未満は文字色黒、10時間以上20時間未満の場合は 文字色青、20時間以上の場合は文字色を赤にしたいのですが、 可能でしょうか? どうかよろしくお願いいたします。

  • Excel 検索に関する関数について教えてください

    色々と試しましたが、どうしてもうまくいかないので教えてください。 A列に休日を除いた日付(生産カレンダー)が入っています。 日付は手入力です。 A列 2008/5/14 2008/5/15 2008/5/16 2008/5/19 2008/5/20 2008/5/21 B1セルに任意の日付が入力された時、C1のセルに任意に入力されている数値分だけ前の日付をA列を参照してD1セルに表示したいのです。 例えばB1セルに2008/5/20、C1セルに3と入力された場合、D1セルには2008/5/20の3つ上のセルの値、2008/5/15を表示させたいのです。 生産カレンダーは列でなく、行にしても可です。 LOOKUP系やOFFSETなども複合したりして試してみましたが、うまくいきません。 ご教授よろしくお願いします。

  • エクセルで悩んでいます

    Sheet1のA1に西暦(2008)B1に月(9月) B3~AF3まで日付(固定)その下の行に曜日表示(月を変えると自動で変わります)A5~A22まで個人名(固定)が入っています、そして B5~B22迄(出勤・欠勤)などその日の出勤状況が入ります(手入力) CDE~同じようにその日の出勤状況が入ります この(出勤・欠勤)等の状況を他のシートに移したいです。 Sheet3に通常のカレンダー(壁に掛かってるような)のような表示があります A33(日曜日)B33が空白セルでC33が(月曜日)D33が空白セルの様に空白を挟み土曜日まで続いています、そして34行目~38行目までは曜日の下に日付けが表示されています。シート1の(月)を変更すると日付けが自動で変わります(曜日は固定) その日にちの脇にある空白セルにシート1の(出勤・欠勤)等の表示を 自動で表示させたです(カレンダーは個人別に人数分作ってあります)月を変えると日にちがずれてしまいますので(カレンダーとして使うなら問題ないのですが、月別の出勤状況を解るようにしたいので どうしていいか解りません。 ちなみにシート1は出勤簿でシート3は個人別の給料明細です。 給料明細の中に小さなカレンダーを作り出勤状況を解るように出来ないか考えています。空白セルに手入力も出来るのですが、時間が掛かり過ぎるので・・・VBAなどは解らないので簡単な関数などで出来ればと思います。 解りにくい説明で申し訳ありませんが、お願いします。

  • Excelの関数

    日付を入力する行の空白でない最下段のセルを見つけて、その日からたとえば50日後の日付を表示させるような関数は作れますか?

  • エクセル関数?

    エクセル2000を使用しています。関数を使用するかわかりませんが2つ教えてください。 1.月を入力すると自動的に月末の日付が表示される。 (例:A1のセルに1と入力するとB1のセルに1月の月末日である31と表示) 2.A列に入力してある種類ごとにB列の数値の合計をB列の最後に出す。 よろしくお願いします。

  • エクセル関数について教えてください

    添付の画像のように、表1(シート)の社員別に日付と定時の労働時間と、残業時間の書いてあるデータを表2(シート)の該当する社員の該当する日に関数により反映されるようにしたいのですが、関数で可能でしょうか? 表1は下にずらっとデータとして打ち込んでいきます。 表2はB2の黄色い部分がリストになっていて、月が変わるようになっていて、そこを変えると日付情報が変わるようにしてあります。 ※表2の4行目の日付は表示形式により“日”だけ表示しています。 説明不足かもしれませんが、どうぞよろしくお願いします。

  • エクセルの関数を教えてください

    エクセルで(シート1)に日付を縦に3か月分ぐらい並べて違うシート(シート2)のセルに日付を入力します。 (シート2)で入力した日を(シート1)の日付の横のセルに●を表示させる事は関数で可能ですか? 例えば、(シート2)に【7月20日】と入力したら(シート1)の【7月20日】の横のセルに●を表示させたいんです。 仕事の報告書で毎日報告書を出す訳ではないので報告書を作った日(日付を入力した日)を一覧表で●が表示されていれば一目でいつ報告書を書いたか分かるようにしたいんです。 分かる方よろしくお願いします。

  • エクセルの時刻関係の関数について教えてください。

    エクセルの時刻関係の関数について教えてください。 深夜の1:00を25:00で表示する関数はありますか? 勤怠表をエクセルにて作成したのですが、上記の問題が解決できなくて 正確な残業時間がもとめられません。 現状は、時:分が三つのセルによって区切られており、それぞれ数字を 出社時刻・退社時刻の時・分を入力することで残業時間が自動計上され その月の合計時間がもとめられるように作りました。 上記のように数字を入力した際に、他のセルでTIME関数を使用して 時間を表示させることによって自動計上をしているので、いわゆる 大元な部分になってきます。 そこで、問題になったのが、深夜残業でも24:00以降がTIME関数だと表示されなくて 正確な残業時間がもとめられません。 一応、他の時間に関係する関数を調べたり、しましたが、よく分かりませんでした。 どんな些細なことでも結構ですので、ご回答をよろしくお願い致します。

  • エクセル関数の日付(長文です)

    セルに年月日で日付が入っています。 同じシートの別のセルにその最初に入ってる日付より2日前の日付を表示させたいのですが、どうしたらいいでしょうか? 最初の日付は別のシートで入力した日付が計算式で入っています。 もう一つの日付は、またさらに別のシートでカレンダーを作成して休日をのぞいたもので入力されています。 最初1営業日前で式が入っているのですが =VLOOKUP(F12,カレンダー,2,FALSE)といった式です。 F12は最初の日付のセルです。 カレンダーは別のシートで作ったカレンダー用のしーとです。 これを2営業日前に変更したいのですが、どこを変えればなりますか? 説明がわかりにくいようでしたらまた補足します。 作った人に聞けば早いのですが、今不在で急いで直さないといけないので。 よろしくお願いします。

専門家に質問してみよう