2017-12-08 4 views
0

私は何をしようとしているのは、2つの日付(開始日と終了日)を反映する数式を作成することです。日付よりも大きい場合は、開始日まで30日を追加します。これまでの計算式は、次のようになります。Excelで数式内の日付を作成する方法

=IF(C3-B3>49,IF(B3+30<=C3,"Report Date: "&B3+30,"Report Date: "&C3),"Report Date: "&((C3-B3)/2)+B3) 

C列は終了日、B列は開始日です。開始日が2010年4月2日、終了日が2010年2月3日の場合は、現在のところレポートの日付:42857

実際に出て欲しいときas、2014年5月2日。だから私は自動的に日付を自動的に設定するために、式自体の中でこれをやっていくつもりですか?

ありがとうございます!

Maykid

答えて

0
  1. フォーマット数式セルは、日付
  2. TEXT(式、 "D/M/YYYY")ことが、あなたはそれで何をしたいかによって異なります。一部の計算が機能しない場合があります。
  3. DATE(YEAR(数式)、MONTH(数式)、DAY(数式))これは、Excelのすべてのバージョンまたは設定で必要な結果を与えるものではありません。
+0

Maykidの出力は単語と日付を含む文字列なので、ポイント1は機能しません。 Point 3は、Maykidの出力が日付だけではないので、それ自身のものがExcelで日付として認識され、それに応じてフォーマットされた長い数字として日付を返します。数字として出力されます。唯一の解決策は、 'TEXT'式で日付を生成する式のビットを囲むことです。あなたのケースでは' = IF(C3-B3> 49、IF(B3 + 30 <= C3) &TEXT((C3-B3)/ 2&TEXT(B3 + 30、 "dd/mm/yy")、 "レポート日:"&TEXT(C3、 "dd/mm/yy")、 )+ B3、 "dd/mm/yy")) – SilentRevolution

+0

パーフェクト!それはまさに私が起こしたいと思っていたものでした!どうもありがとうございます! – Maykid

0

この質問の鍵は、Excelが日付をどのように処理するかを理解することです。 Excelの日付は実際には1-jan-1900 = 1の数値です。それから、Excelは数字をとり、より意味のあるものとしてフォーマットしますが、それは本質的には数字です。この方法では、あなたの地域設定が常に同じ日にどのように参照されるかは重要ではありません。

通常、Excelはこれらの数字を日付として認識し、地域の設定やカスタム設定に従って自動的にフォーマットします。 dd/mmm/yyy4285702/May/2017を与え、mm-d-yyでそれは日付が文字列(テキストのビット)に含まれている場合を念頭にExcelは、単に数を見て、それは数だけでなく、テキストの少しばかりだからということ05-2-17

ウィットになり、出力全体が文字列とみなされ、Excelは日付のような文字列をフォーマットできません。

この理由から、TEXTの式で日付を生成するコードにビットを囲む必要があります。 TEXT数式は数値をとり、それに応じて書式を設定し、それを文字列として吐き出します。このため、Excelはこのテキストを使用して計算を実行できなくなります。

私はあなたのケースのための式はあなたが式の「DD/MM/YY」の部分を変更することによって、出力形式を変更することができ

=IF(C3-B3>49,IF(B3+30<=C3,"Report Date: "&TEXT(B3+30,"dd/mm/yy"),"Report Date: "&TEXT(C3,"dd/mm/yy")),"Report Date: "&TEXT(((C3-B3)/2)+B3,"dd/mm/yy")) 

のようなものであるべきだと思います。

+1

確かに2番目のIFが重複しています。C3-B3> 49の場合、B3 + 30 <= C3であるかどうかをテストする必要はありませんが、TRUEでなければなりません....そのIFを取り出し、 (C3-B3> 49,30、(C3-B3)/ 2)+ B3、 "dd/mm/yy"というテキストが繰り返されるのを避けることができます。 ) ' –

+0

私はあなたが正しいと思う、私は実際に条件を見ていないとMaykidの完全な式をコピーし、変更を加えた。しかし、より効率的であるので、私はあなたの方が好きです。 – SilentRevolution

関連する問題