• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:使用期間を表示させる関数)

装置の無料期間を表示させる関数の作成方法

このQ&Aのポイント
  • 会社で、客先に貸出した装置の無料期間が、客先ごとでどの位あるのか表示する関数を考えています。
  • 無料期間は3月から8月までで、出荷日と返却日を基準に計算されます。
  • 顧客ごとに無料期間が異なるため、関数は顧客ごとの出荷日と返却日を受け取り、無料期間を計算して表示するようになります。

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

  • ベストアンサー
  • Masa2072
  • ベストアンサー率51% (94/182)
回答No.1

いろいろ方法はあるのかもしれませんが、とりあえずは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ヶ月とする

chimaki102
質問者

お礼

ご回答ありがとうございます。 =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ヶ月になってしまいます。 なんででしょうか??? スミマセン・・・・・。 それと基本的なことかもしれませんが、日にちを関数で表示させるとき 表示形式が日付だと関数は計算されないのでしょうか? 今は文字列で表示させています。

その他の回答 (2)

  • Masa2072
  • ベストアンサー率51% (94/182)
回答No.3

ANo.1です。 こちらでの検証では出荷日3、返却日11では 5ヶ月で表示されていますが・・・ 0ヶ月と表示されるのはANo.1に出した条件の1番目のケースと出荷日、返却日が同じ場合です。 > 表示形式が日付だと関数は計算されないのでしょうか? > 今は文字列で表示させています。 なにを指していっているのでしょうか?

  • wisemac21
  • ベストアンサー率39% (171/429)
回答No.2

出荷日と返却日のデータシリアル値ではなく、標準の数値で考えてみました。 顧客名 出荷月 返却月 無料期間 客先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関数で月の数値にすれば同じように計算できると思います。

chimaki102
質問者

お礼

ご回答ありがとうございます。 私の質問方法が少し違っていたようで・・・・ 無料期間は常に変更する形になるので今回回答していただいた 関数では常に関数を変更しなくてはいけなくなってしまいます。 私が、ちゃんと説明をしていればよかったですねすみません。

関連するQ&A