- ベストアンサー
装置の無料期間を表示させる関数の作成方法
- 会社で、客先に貸出した装置の無料期間が、客先ごとでどの位あるのか表示する関数を考えています。
- 無料期間は3月から8月までで、出荷日と返却日を基準に計算されます。
- 顧客ごとに無料期間が異なるため、関数は顧客ごとの出荷日と返却日を受け取り、無料期間を計算して表示するようになります。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
いろいろ方法はあるのかもしれませんが、とりあえずはIF関数がすぐに浮かびます。 この手のものは、とりあえずパターンをを書き出してみるのが一番 期間外は「貸出日が8月より後」か「返却日が3月より前」 貸出日が3月より前なら無料期間開始日は3月 返却日が8月より後なら無料期間終了日は8月 というのを式にすれば良いので A1に3、B1に8 客先Aの貸出日がA2,返却日がB2とすると 「結果x月~x月までの」の部分の式は =IF(OR(A2>$B$1,B2<$A$1),"",IF(A2<$A$1,$A$1,A2) & "月~" &IF(B2>$B$1,$B$1,B2) & "月までの") xヶ月の部分の式は =IF(OR(A2>$B$1,B2<$A$1),0,IF(B2>$B$1,$B$1,B2)-IF(A2<$A$1,$A$1,A2)) としてユーザー書式で 0ヶ月とする
その他の回答 (2)
- Masa2072
- ベストアンサー率51% (94/182)
ANo.1です。 こちらでの検証では出荷日3、返却日11では 5ヶ月で表示されていますが・・・ 0ヶ月と表示されるのはANo.1に出した条件の1番目のケースと出荷日、返却日が同じ場合です。 > 表示形式が日付だと関数は計算されないのでしょうか? > 今は文字列で表示させています。 なにを指していっているのでしょうか?
- wisemac21
- ベストアンサー率39% (171/429)
出荷日と返却日のデータシリアル値ではなく、標準の数値で考えてみました。 顧客名 出荷月 返却月 無料期間 客先A 1 2 0ヶ月 客先B 1 7 4ヶ月 客先C 4 8 4ヶ月 客先D 3 11 5ヶ月 客先E 9 10 0ヶ月 セルd2に =IF(OR(AND(B2>=3,B2<=8),AND(C2>=3,C2<=8)),MIN(C2,8)-MAX(B2,3),0)&"ヶ月" シリアル値の場合はMONTH関数で月の数値にすれば同じように計算できると思います。
お礼
ご回答ありがとうございます。 私の質問方法が少し違っていたようで・・・・ 無料期間は常に変更する形になるので今回回答していただいた 関数では常に関数を変更しなくてはいけなくなってしまいます。 私が、ちゃんと説明をしていればよかったですねすみません。
お礼
ご回答ありがとうございます。 =IF(OR(A2>$B$1,B2<$A$1),0,IF(B2>$B$1,$B$1,B2)-IF(A2<$A$1,$A$1,A2))の関数で表示させると客先Dの部分が0ヶ月になってしまいます。 なんででしょうか??? スミマセン・・・・・。 それと基本的なことかもしれませんが、日にちを関数で表示させるとき 表示形式が日付だと関数は計算されないのでしょうか? 今は文字列で表示させています。