- ベストアンサー
特定期間の計算についてご教授ください
- A1セルに入れた8桁の数字(日付YYYYMMDD)の文字列が入力されている場合、右から1.2桁の数字DDが1から15の場合、MM(当月)の2ヶ月先の末日を求め、右から1.2桁の数字DDが16から31の場合、MM(当月)の3ヶ月先の末日を求める。試した式でうまくできない場合があり、解決策を求めています。
- 質問者はA1セルに入力された8桁の数字(日付YYYYMMDD)の文字列を処理しようとしています。具体的には、右から1.2桁の数字DDが1から15の場合、MM(当月)の2ヶ月先の末日を求め、右から1.2桁の数字DDが16から31の場合、MM(当月)の3ヶ月先の末日を求めたいと考えています。しかし、試した式ではうまくできないため、解決策を求めています。
- A1セルに入力された8桁の数字(日付YYYYMMDD)の文字列を処理する方法についての質問です。具体的には、右から1.2桁の数字DDが1から15の場合、MM(当月)の2ヶ月先の末日を求め、右から1.2桁の数字DDが16から31の場合、MM(当月)の3ヶ月先の末日を求めたいと考えています。試した式ではうまくできなかったため、解決策を求めています。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
入力値が8桁整数なら、求める2、3ヶ月先の日付も8桁整数をご希望なンでしょ?(首尾一貫!) No.1の方のアイデアをお借りすれば、次のようになろうかと。 =VALUE(TEXT(EOMONTH(TEXT(A1,"0-00-00"),IF(RIGHT(A1,2)-16<0,2,3)),"yyyymmdd"))
その他の回答 (4)
- bunjii
- ベストアンサー率43% (3589/8249)
>A1セル「20140204」を入力 >B1セル >B2セル >B3セル B1、B2、B3に共通する誤りは次の通りです。 MID(A1,7,2)<=15 → "04"<=15 → FALSE 文字列の"04"は全ての数値より大きいと判定されますので論理式として不適切です。 VALUE(MID(A1,7,2))<=15 または MID(A1,7,2)*1<=15 に修正してください。 B1の式はIF関数の第2引数、第3引数についても文字列を数値化せずに計算していますのでA1セルの文字列を数値に変換する必要があります。 EOMONTH(A1,2) → #NUM! B2セルの式は評価に値しません。 B3セルの式は第1引数(論理式)を修正すれば目的に合います。 但し、結果の値はシリアル値なので表示形式を日付にしないと判断できません。
お礼
文字列と数値の混同をご指摘いただきありがとうございます なかなか目的の条件に関数をくっつけただけではうまくいきませんでしたが、ご親切に意味を教えていただき納得することができました。 ご教授ありがとうございました。
- gyouda1114
- ベストアンサー率37% (499/1320)
No.2です。 次のサイトを参考にしてください。 日付と時刻のシリアル値とは http://www.officepro.jp/excelfunc/date/index0.html
- gyouda1114
- ベストアンサー率37% (499/1320)
- keithin
- ベストアンサー率66% (5278/7941)
=EOMONTH(TEXT(A1,"0-00-00"),IF(RIGHT(A1,2)-16<0,2,3)) などのように。 参考にしてください: ○数値と文字列は別物だという事 ○20130204という数値から正しく年月日を計算する事 ○RIGHT(A1,2)という「文字列」と数値の15(16)の大小関係を正しく計算する事 ○2と3を仕分けるIF文を作成して利用する事
お礼
ご教授ありがとうございました
お礼
無事問題解決しました ほんとに助かりました、ありがとうございました