• ベストアンサー

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

エクセル関数で困っています セル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)

  • okwavey2
  • ベストアンサー率15% (251/1593)
回答No.2

関数の意味はそのまま検索すればわかるんで、検索しましょう。 検索しづらい間違いがあったので、説明しておきます。 Excelで、"文字列" このようにダブルクォートで挟まれたものは文字列として扱われます。 文字列はただ表示するためだけのもので、意味はありません。 ですので、関数をダブルクォートで挟んでしまうのはおかしいです。 質問に不足していることは、式に使われているセル全てに入力されている具体的な値や式。全て必要です。一つ一つ確認して補足しましょう。 他に調べづらいところで気がついたところ >当月より-1の月の場合 MONTH(NOW())が今月だから、-1で先月とでも思ったのかもしれませんが、 今月の取りうる値は1~12 マイナス1なら0~11 0月なんてないですね。

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

>セルAV23=IF(AW23="","",MID(AW23,5,2)) >このセルにAW23セルの日付より3か月後を「00」表示しています AV23の値は数字2つの文字列になりますがそれで良いのですか? >セルCX23=IF(AV23="MONTH(NOW())-1","1","") >としましたが意図する表示ができません CX23にはどのような値を求めていますか? 「"MONTH(NOW())-1"」は計算式ではなく文字列なので前述の数式で求めているAV23の2桁の数字(文字列)とは絶対に一致しませんのでCX23の値は常に""です。 質問の文言からあなたの考えていることが読み取れません。

関連するQ&A