• ベストアンサー

INT関数で日数から月表示に換算する際のマイナス表示を消したい。

初回来店日から2回目来店日までの日数を計算する際に、 「教えて!goo」の過去の記事から以下の式を利用させていただいています。  N列:初回来店日  O列:2回目来店日 =IF(O10-N9>30,INT((O10-N9)/30)& "ヶ月" & MOD(O10-N9,30)&"日",O10-N9) ・初回のみの来店者も含めたシートで、氏名でソートしているため、 2回目のデータが無い顧客は、マイナス表示になります。 数値であれば、単純に「条件付書式」で「0」以下を白文字にするなどの設定が考えられますが、 関数で「&"日"」表示にしているので、その設定ができません。 IF関数を使って表示できそうですが、どのように記述すればよろしいでしょうか?エクセル2000です。

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんばんは。 こんな風にしてみたらいかがでしょうか? Excel2000でも大丈夫のようです。 =TEXT(INT((MAX(O10-N9,0))/30),"##ヶ月;;")&TEXT(MOD(MAX(O10-N9,0),30),"##日;;") もちろん、1ヶ月を30日と計算した場合です。正しい?計算は、DATEDIFF関数を使います。 =IF(AND(O10>N9,COUNT(N9,O10)=2),TEXT(DATEDIF(N9,O10,"m"),"#ヶ月;;")&TEXT(DATEDIF(N9,O10,"md"),"#日;;"),"") どちらが良いのかは、なんともいえません。

miyabi08
質問者

お礼

Wendy02さま 回答ありがとうございます。 ふたつめの「DATEDIF関数」の式で、無事に表示できました。 とても助かりました。 また機会がありましたらよろしくお願いします。

その他の回答 (1)

  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.1

一カ月を30日とみなすと誤差が出ますので、日数をきちんと出したいならDATEDIF関数を利用するほうが良いでしょう。 質問の表とは形式が違いますが、まず関数を説明します。 N列     O列     ?列 2007/12/3   2008/3/26  3カ月23日 3008/2/14   (空白)   (空白) のようなデータがあるとき「?列」の式は  =IF(O1="","",DATEDIF(N1,O1,"M")&"カ月"&DATEDIF(N1,O1,"MD")&"日") になります(「O1」は「O(オー)列1行目」です。また引数の"M"は満月数、"MD"は1月未満の日数を意味します) でも質問文の式は「O10-N9」のように異なる行を参照していますね。 そうなるともう少し情報をいただかないと式が書けません。 おそらく「顧客が変わったら日数は空白で表示する」などの工夫が必要になると思いますが、多少なりとも参考になれば幸いです。

miyabi08
質問者

お礼

zap35さま 早い回答ありがとうございました。 顧客データを受注日毎に1行で持っているため、1行にまとめるのは1工程増えてしまいます。 しかし、他のデータで1行で作業できるものがあるときは、こちらの式を利用させていただきます。 とても参考になりました。ありがとうございました。

関連するQ&A

専門家に質問してみよう