• ベストアンサー

日付関数について教えてください

エクセル関数で困っています セルAV23=IF(AW23="","",MID(AW23,5,2)) このセルにAW23セルの日付より3か月後を「00」表示しています セルCX23=IF(AV23="MONTH(NOW())-1","1","") としましたが意図する表示ができません AV23セルに当月より-1の月の場合”1” それ以外の月は””(空白) としたいのですがうまくいきません ご教授よろしくお願いいたします

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

  • ベストアンサー
  • bunjii
  • ベストアンサー率43% (3589/8249)
回答No.13

質問者と回答者のコミュニケーションにズレがあり混乱しているようです。 回答No.8への補足に以下のような記述があり、これを元にすれば簡単に解決できるでしょう。 ----------ここから---------- AU23:(20180705)8桁のテキストです AW23: AU23の3カ月後の末日を表示(関数) AV23: AW23の月を2桁表示(関数) CX23 : AV23またはAW23の月と当月が同じ場合に(1)を表示     それ以外は(空白) (年は関係ありません) ----------ここまで---------- AW23とAV23は文字列のようですからIF関数の論理式を文字列同士の比較または数値同士の比較にすれば良いでしょう。 AV23またはAW23の何方と現在の月を比較するかも統一することが望ましいことです。AV23は他のセルで参照していなければ無駄な数式を設定していますのでAW23の月と現在の月を比較する方が合理的です。 CX23の数式は下記で良いと思います。 =IF(MID(AW23,5,2)*1=MONTH(NOW()),1,"") MID(AW23,5,2)で月数の2桁を文字列として切り出しています。 MONTH関数で求められる値は数値なのでAW23から切り出された2桁の数字の文字列を数値化しないと正しい比較になりません。 数字だけの文字列を数値化するにはVALUE関数を使いますが他に1を乗ずる方法や0を加算する方法もあります。 尚、AW23に設定されている数式は変更できないものでしょうから計算結果をそのまま使えば問題ないでしょう。

100POINT
質問者

お礼

わけのわからない質問にご親切にご回答ありがとうございました。

その他の回答 (12)

  • chayamati
  • ベストアンサー率41% (260/624)
回答No.12

今晩は回答No.7のchayamatiです。 先ず日付の実態をご理解ください ・日付は1900/1/1を0としての経過日数で、小数点以下は時、分、秒 です  実数とよく似ているようですが、繰り上がり違います  12月ので年に、月末(28,29,30,31)月に繰り上がります。 >セルAV23=IF(AW23="","",MID(AW23,5,2))  セルAW23表示形式を数値に変更してください、AV23の結果がご理解できます >このセルにAW23セルの日付より3か月後を「00」表示しています  厳密には3か月後の月初、3か月後の20日、3か月後の月末 >セルCX23=IF(AV23="MONTH(NOW())-1","1","")  数値または日時を文字列変換するにはTEXT関数です  =MONTH(NOW()) または =MONTH(TODAY())

100POINT
質問者

補足

ありがとうございます

  • HohoPapa
  • ベストアンサー率65% (455/693)
回答No.11

>あとはCXに当月とAVが同じ時に「1」を表示させるだけなのですが 当月とは、今日を含む月のことですね? ならば、 =IF(MONTH(NOW())=MONTH(AV22),1,"") ということと思います。

100POINT
質問者

補足

ありがとうございます しかしうまく表示されません AV22=IF(AW23="","",MID(AW23,5,2)) という関数で「07」と2桁表示です よろしくお願いいたします

  • HohoPapa
  • ベストアンサー率65% (455/693)
回答No.10

No.9 に補足 式だけだとわかりにくいかもしれなので 補足しします。 AW22の計算式は、 AU22の年、月を使い、課題年月の15日を求めます。 そこに、120日を加算することで4か月後の15日前後が算出されます。 この年月の1日(つまり課題年月の4か月後の1日)を求め その前日(つまり課題年月の3か月後の末尾)を求めています。

  • HohoPapa
  • ベストアンサー率65% (455/693)
回答No.9

こうゆうことでしょうか? AW22 =DATE(YEAR(DATE(LEFT(AU22,4),MID(AU22,5,2),15) + 120),MONTH(DATE(LEFT(AU22,4),MID(AU22,5,2),15) + 120),1)-1 AV22 =AW22 書式設定 mm AV23 =IF(MONTH(NOW())=MONTH(AV22),1,"")

100POINT
質問者

補足

ありがとうございます 画像をアップしようとしましたが補足では無理のようですね 上記のところまでは出来ています あとはCXに当月とAVが同じ時に「1」を表示させるだけなのですが よろしくお願いいたします

  • mt2015
  • ベストアンサー率49% (258/524)
回答No.8

ANo.5です。 AW23に入っている日付とは、日付そのものではなく、文字列なんですね? 話を整理しましたが、これで合っていますか? ・セルAW23には、日付が8ケタの数字で構成された文字列で入っている(例:20190306)。 ・セルAV23には、AW23の日付の3ヶ月後の月を表示したい(例:6)、AW23が空白なら空白。 ・セルCX23には、先月の月と、AV23が一致していれば1、そうでなければ空白または0を表示したい(年の違いは無視)。 AV23:=IF(AW23="","",MONTH(EDATE(TEXT(AW23,"0000!/00!/00")*1,3))) CX23:=IF(AV23=MONTH(EDATE(NOW(),-1)),1,"") 違う様でしたら、具体的な例を複数パターン挙げてください。 その際、式は無い方がこちらの混乱が無くてよいです。

100POINT
質問者

補足

ご回答ありがとうございます 文字で表現しますと以下のようになりますが ご理解いただけますでしょうか? よろしくお願いいたします AU23:(20180705)8桁のテキストです AW23: AU23の3カ月後の末日を表示(関数) AV23: AW23の月を2桁表示(関数) CX23 : AV23またはAW23の月と当月が同じ場合に(1)を表示      それ以外は(空白) (年は関係ありません)

  • chayamati
  • ベストアンサー率41% (260/624)
回答No.7

今日は >セルCX23=IF(AV23="MONTH(NOW())-1","1","") としましたが意図する表示ができません >---------------------------------------------------------------------------------------------- エクセルは数字だけの文字列は取り扱い出来ません セルCX23=IF(AV23=MONTH(NOW())-1,1,"")

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.6

質問の表現が厳密でないように思うので、もう一度、質問しなおしてはどうかな。 ーー MONTH関数は、年月の月数字のみを問題にする関数で、12月から翌年1月になった時、月が+1進んだことを計算するのは複雑(すなわち、年の要素も加味しないとならないと思う)。初心者は、年月について、安易に引き算、足し算的な計算式を、よく慣れないと、自作してはならないとは思う。 ーー DATEDIFという関数はあるが https://support.office.com/ja-jp/article/2-%E3%81%A4%E3%81%AE%E6%97%A5%E4%BB%98%E9%96%93%E3%81%AE%E5%B7%AE%E5%88%86%E3%82%92%E8%A8%88%E7%AE%97%E3%81%99%E3%82%8B-8235e7c9-b430-44ca-9425-46100a162f38 完全な月数を返す、とある。この意味わかる? ーーー 質問の月は (1)名称的な月(例、月数字が変わると翌日でも+1と)を考えるのか (2)実質的な月なのか(結構定義がむつかしいように思う) 質問に書いてない。 初心者の、うまく行かない自作の関数を質問に掲げる(こういう人が多い)よりも、自分のデータをよく観察して、数個の実例の(開始日と終期の対の)日付を質問に挙げて、その場合こういう結果を出したい、という質問をすべきだ。 ーー =DATEDIF(A1,B1,"M") =DATEDIF(A1,B1,"YM") というのがある。本件で、使えるかな。特に後者。 ーー エクセルは+1月した年月を計算すると、正しく計算してくれるから、(13月=DATE(YEAR(A1),MONTH(A1)+1,1)などとしない) それとの比較をすれば確実だが、2,3,4カ月先もあれば複雑になる。 ーー https://support.microsoft.com/ja-jp/help/214134/how-to-calculate-the-number-of-months-between-two-dates-in-excel Excel で 2 つの日付の間の月数を計算する方法 (本件解決に、より近い解説だと思うので)でもよく読んで、考え直したらどうか。

100POINT
質問者

補足

どう質問したらよいかが分からずお手数おかけします 要するにあるセルに(20180706)と記載がある場合 =IF(AU109="","",VALUE(TEXT(EOMONTH(TEXT(AU109,"0-00-00"),IF(RIGHT(AU109,2)-16<0,2,3)),"yyyymmdd")) 別のセルに現在と同月の場合(1)としそれ以外は(0)または(空白) としたかったのですがわかりにくかったですね お手数ですがよろしくお願いいたします

  • mt2015
  • ベストアンサー率49% (258/524)
回答No.5

恐らく、こういう事がやりたいのでしょう。 AV23:=IF(AW23="","",MONTH(EDATE(AW23,3))) CX23:=IF(AV23=MONTH(EDATE(NOW(),-1)),1,"") 「日付のシリアル値」やEDATE関数について調べてみてください。

  • kkkkkm
  • ベストアンサー率66% (1725/2595)
回答No.4

こちらを参考にして作り直した方がいいと思いますよ。 エクセルで日付計算。日数・月数の計算方法まとめ(datedif関数不使用) https://www.excelspeedup.com/hidukekeisan/

  • msMike
  • ベストアンサー率20% (364/1804)
回答No.3

確認させてください。 1.「AW23セルの日付」が本日の場合、そのセルに入力するのは何でそれは文字列ですか、それとも、数値ですか? 2.「~が意図する表示ができません」と仰っていますが、貴方が意図している表示を教えてください? 3.「~がうまくいきません」とのことですが、どうなれば「うまくい」ったことになるのですか?

関連するQ&A