- ベストアンサー
エクセルでの関数教えてください
今、関数を使って表を作っていますが、うまくいかないので教えてください。 日々数字を入力した表を月末に報告するのですが、報告書にはルールがあり、1月に30を超えた場合その日以降は空欄にしなければならないのです。 私の考えた報告書は、日々の入力表と同じものを別のシートに作成し、前日までの合計が30に達していなければ当日入力した数字を表示するというものです。 =IF((SUM(1日:前日))<=30,当日の数字,"") この計算式でばっちり!と思っていたら、例えば前日までで29のときに当日が2以上の数字がはいると29までしか集計できないことに気づいてしまいました。 昔々、関数を勉強した(ってほどではないんですけど・・・)ときには、IFをたくさんつけて条件を増やした記憶があるのですが、どのようにつなげていけばいいのかすっかり忘れてしまいました。 この表の提出期限は明日の朝一番なのですが、手元に参考書もなく途方にくれています。 日々入力するする数字は0~3までなのですが、いい計算式がありましたらぜひ教えてください。
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
=IF((SUM(1日:当日))<=30,当日の数字,IF(30-SUM(1日:前日)>=0,30-SUM(1日:前日),0)) でしょう! 最初のIFで当日まで合計して、30との差分を出すとき(後ろのIF)では前日までの合計を使う事に注意。
その他の回答 (6)
- imogasi
- ベストアンサー率27% (4737/17069)
#4のお礼の例で A3に ==IF(A2<=5,A2,5) B3に =IF(SUM($A$2:B2)<=5,B2,IF(SUM($A$2:A2)>=5,0,5-SUM($A$2:A2))) C3より右列は式を+ハンドルを引っ張って複写する。 B3だけは別にせざるを得ないところがミソでしょうか。 結果はA3:F3は 2 0 1 1 1 0
お礼
ご回答ありがとうございます。 こういう方法もあるのですね。 計算式は結構奥が深いものなのですね。 少し頭が良くなった気がします。 基本的にyasinomisenzaiさんの式で作成させていただきましたが、一箇所だけimogasiさんの計算式を入れていることは、私だけの秘密です。 本当にありがとうございました!
- lonlysheep
- ベストアンサー率56% (29/51)
これではどうでしょう?(意地になってきました^^;) 各日の報告数を計算する式として、 ~~~~~~~~~~~~~~~~~~~~~~~~ =IF(SUM(1日の実施数:当日の実施数)>30,IF(SUM(1日の実施数:前日の実施数)<30,30-SUM(1日の実施数:前日の実施数),0),当日の実施数)
お礼
たびたびありがとうございます。 入力してみたのですが、エラーが出てしまいました。 何とか表は完成させることができました。 ご協力感謝いたします。
- lonlysheep
- ベストアンサー率56% (29/51)
#1のものです。 ちょっと勘違いかもしれませんが、 前日までの合計+当日=当日までの合計→表示 27+0=27→空欄 27+1=28→1 27+2=29→2 27+3=30→3 28+0=27→空欄 28+1=28→1 28+2=30→2 28+3=31→2 29+0=29→空欄 29+1=30→1 29+2=31→1 29+3=32→1 ということでしょうか? であれば、以下のような式になるのかと思います。 =IF((SUM(1日:当日))>30,30-(SUM(1日:当日)),IF(当日=0,"",当日の数字))
お礼
なんどもありがとうございます。 日付の欄には合計は入りません。 たとえば欄が少ないので、MAXが5だとすると 日付→ 1 2 3 4 5 6 計 実施→ 2 0 1 1 2 1 7 報告→ 2 0 1 1 1 0 5 というふうになってほしいのです。 混乱させてしまい申し訳ございません。
- yasinomisenzai
- ベストアンサー率12% (4/31)
=IF((SUM(1日:前日))<=30,当日の数字,IF(当日の数字=0,"",1)) で出来そうですか?
お礼
こんな時間にアドバイスありがとうございます。 残念ながら、日々の入力どおり表示されてしまいました。 でも、なんとなく先が見えそうな気がします。 このままでは明日の報告どころか、出社も危うい状況なので、締め切りを午後に伸ばしてもらうことにします。 こんなに大変だとは思いませんでした。 引き続きアドバイスお願いいたします。
- yasinomisenzai
- ベストアンサー率12% (4/31)
書式メニューに「条件付き書式」というのがあると思います。 そこで、セルの値が30以上だったら文字の色を白にする、とかしてしまえばいいのでは? 急ぎだったら地道に手で作るのが近道かもしれませんね。
お礼
深夜にご回答ありがとうございます。 明日提出するのは報告書ではなく、この表自体なのです。 作業をしている社員に配布し、今月の報告に使用してもらうというものです。 結構むずかしいものなのでしょうか?
- lonlysheep
- ベストアンサー率56% (29/51)
間違っていたらすみません。 >前日までの合計が30に達していなければ当日入力した数字を表示する のであれば、 =IF((SUM(1日:前日))>30,"",当日の数字) でだめですかね?
お礼
早速の回答ありがとうございます。 私の説明が少し悪かったようで申し訳ありません。 当日を足しても30未満であれば入力した数字そのままでいいのですが、前日までが29で当日が2だった場合は1と表示できるようにしたいのです。 もちろん0のときは空欄、1の場合は1、3の場合も1となるようにできればいいのですが・・・。
お礼
ご回答ありがとうございます。 うまく表示されました! 無能な私にも意味がよくわかる計算式です。 おかげさまで、無事表を作成することができました。 また別の報告書の書式も頼まれてしまいましたが・・・。 またわからないことがあったら教えてください。