• ベストアンサー

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

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

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

  • ベストアンサー
  • bunjii
  • ベストアンサー率43% (3589/8248)
回答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% (254/607)
回答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% (454/690)
回答No.11

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

100POINT
質問者

補足

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

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

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

  • HohoPapa
  • ベストアンサー率65% (454/690)
回答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% (254/607)
回答No.7

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

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答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
  • ベストアンサー率65% (1606/2443)
回答No.4

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

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

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

関連するQ&A

  • IF条件設定がうまくいきません

    下記関数で日付を表示させています (1)から(3)までは問題なく現在使用していますが 今回の(4)番のところの関数がうまくいきません ご教授いただけますと助かります、よろしくお願い致します 1.AZ4に年月日「20181001」と任意で入力 2.セルBB4は「AZ4」から条件付き月末日を表示 =IF(AZ4="","",VALUE(TEXT(EOMONTH(TEXT(AZ4,"0-00-00"),IF(RIGHT(AZ4,2)-16<0,2,3)),"yyyymmdd"))) 3.セルBA4は下記関数でBB4のデータから月を2桁で抽出表示 =IF(BB4="","",MID(BB4,5,2)) 4.セルAY4に「BA4」で得た2桁の月と現在の当月が一致した場合「●」を表示し条件以外は空白とする =IF(BA4="","",IF(MID(BA4,5,2)),"","",●)  ------ダメです =IF(BA4=0,"",IF((MID(BA4,5,2))=MONTH(TODAY()),"●","")) ------ダメです =IF(BA4=0,"",IF(BA4=MONTH(TODAY()),"●","")) ------ダメです 以上よろしくお願いいたします。

  • EXCEL IF関数での日付の認識について

    よろしくお願いいたします。    A         B 1 2006/07/30    OK 2 2006/8/8      A列の日付が2006/7/31以前だったらB列にOK表示、 2006/8/1以降であったらB列に空白””というIF関数を使った数式をお教えください。 MONTH を使ったりしたのですが、年度単位(4月から翌年3月)の対象のため「MONTH(A1)<=7」と指定すると、2007/3/31も対象になってしまいました。

  • IF関数で「日付~日付」と表示させたい

    月2回(原則7日と22日)、給与があります。 給与日が7日(週末、祝日がかぶるとその前日になる)の場合、 その支払対象期間は先月の16日~月末までです。 (例:給与日が5/7/2012の場合、その支払対象期間は4/16/2012-4/30/2012) 給与日が22日(週末、祝日がかぶるとその前日になる)の場合、 その支払対象期間は当月1日~15日までです。 (例:給与日が5/22/2012の場合、その支払対象期間は5/1/2012-5/15/2012) そこで、例えば 給与日のセルに5/7/2012(週末にかぶる場合は前日)と入力すると 次のセルに自動で(4/16/2012-4/30/2012)と表示され、 給与日のセルに5/22/2012(週末にかぶる場合は前日)と入力すると 次のセルに自動で(5/1/2012-5/15/2012)と表示されるようにしたいです。 そこで、IF関数を使い、(I1のセルに給与日(5/7/2012)が入力されているとします) 論理式:   DAY(I1)<15 真の場合:  MONTH(I1)-1&"/16/2012-"&DATE(YEAR(I1),MONTH(I1),1)-1 偽の場合:  MONTH(I1)&"/1/2012-"&MONTH(I1)&"/15/2012" と入力したところ、 偽の場合はよいのですが、真の場合には 4/16/2012-41029 と月末の日付がシリアル値で返ってきてしまいます。 どうしたら、41029が日付表示になってくれるのでしょうか・・。 宜しくお願いいたします。

  • 日付を表示

    H3に日付を入力してます。 B6にこの関数を入力してます。 =IF(DATE(YEAR($H$3),MONTH($H$3),1)*DATE(YEAR($H$3),MONTH($H$3),-5+ROW()),DATE(YEAR($H$3),MONTH($H$3),-5+ROW()),"") これをB6~↓にコピペしてます。 なんだか違う気もしますが、無事に表示されてます。 やりたい事は、月によって日数が変わるとき例えば 29日や31日など この時現在は空いたセルによく月の1日や2日が表示されるのを空白にしたいのです。 後上記の関数以外の用方法がありますか! ちなみにC列には、WEEKDAY関数で曜日を表示させてます。 おねがいします。

  • IF関数のネスト

    IF関数のネストについての質問です。 例えば、D1のセルに日付が入力してあり、 A4のセルの日付の月がD1の月と同じならば、 「今月」違うなら「エラー」と表示させたいのですが、 数式は解るのです。↓ =IF(MONTH($D$1)=MONTH(A4),"今月","エラー") ですが入力のしかたが解らないのです。 まず、fxの関数の挿入からIFを選択、論理式の部分に、 fxの左にある下矢印からMONTHを選択、 シリアル値はD1を絶対参照。 このあとがどうしていいのか解らないのです。 どなたか教えてください。 宜しくお願いします。

  • 日付が自動的に変わる関数は?

    関数なんて自分で考えて作るものなのでしょうか? 元からある「式」をそのまま取り出してポンと置けば済むのだとばかり、思っていました。 それほどの初心者です。 前置きが長くてすみません。 日付に関する関数について、どうしてもわからない事があって書き込みをしました。 ここに二つのセルがあります。 左のセルには直接入力で日付を入れていって、右のセルには、左のセルの日付が1日から10日だったら自動的にその月の15日と表示するように、同様に11日から20日だったら25日と、21日から末日だったら、翌5日と、表示したいのですが、どうすればよいのでしょう?(ちなみに日付の表示は「●/●」となるように。) IFやDAYを駆使したつもりですが、どうもうまくいきません。 よろしくおねがいします。

  • Excel2007 日付関数について教えて下さい。

    A1に例えば「2012/5/22」と入力すると B2に翌々月10日の日付を入力するため 関数「=DATE(YEAR(A1),MONTH(A1)+2,10)」 と関数を入れました。 A1に日付が入れば翌々月10日の日付を返してくれるのですが A1が空白だと「1900/3/10」の値を返してきます。 日付が入っているとややこしいので消すもしくは日付じゃない値を返すことは出来ないでしょうか よろしくお願いします。

  • 日付の関数

    エクセルの資料で=TODAY()(今日日付が入るように設定してあるセルがあります。・・でその下のセルには今日の日付の月の末日が入るようにしたいのですが(例えば セルA1に2004年1月14日 セル2に2004年1月31日と表示させたい)どのような関数を使えばいいですか?宜しくお願いします。

  • 日付を含む関数について。

    エクセル2003での質問です。 ある列のセル(A1とします)のセルに日付が書き込まれた時だけ、対応する列のセル(B1とします)に決まった文字(ここでは"済")が入るようにしたいと思いIF関数を使って組み立てたのですが、日付の入れ方が解らず上手く行きません。 =IF(A1="日付","済","") ←B1に書き込んでます。 と式を立てていますが、この・日付・の部分の入れ方を教えて頂けないでしょうか? また、勉強の為他の考え方も有ればお教え下さい。 宜しく御願いします。

  • If関数に2つ条件をつける

    If関数を使って日付の月と翌月を記載するという関数を作ったのですが、 これにプラス4日締めの条件をつけたいのです。 日付が4日以降の場合は翌月と翌々月にするという関数はどのように作るのでしょうか。 =(MONTH(A1)&","&IF(MONTH(A1)+1<13,MONTH(A1)+1,MONTH(A1)-11))

専門家に質問してみよう