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

このQ&Aのポイント
  • 質問者は、日付を表示するための関数を使用していますが、特定の条件の場合に正しく機能しない問題が発生しています。
  • 具体的には、特定の条件(4)での関数がうまく機能していないため、質問者は解決策を求めています。
  • 回答者に対して、質問者は関数がうまく機能しない原因や適切な修正方法を教えてほしいとしています。
回答を見る
  • ベストアンサー

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()),"●","")) ------ダメです 以上よろしくお願いいたします。

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

  • ベストアンサー
  • watabe007
  • ベストアンサー率62% (476/760)
回答No.2

>4.セルAY4に「BA4」で得た2桁の月と現在の当月が 当月はMONTH(NOW())なのでは AY4=IF(MONTH(NOW())=BA4,"●","") BA4=IF(BB4="","",VALUE(MID(BB4,5,2)))

100POINT
質問者

お礼

ご教授ありがとうございました 大変勉強になりました 無事問題解決いたしました

その他の回答 (4)

  • chayamati
  • ベストアンサー率41% (254/607)
回答No.5

お早うございます シリアル値ご理解するのにしばらく時間がかかると思います。 日付(Today())から日(Day())を引くと前月末日ですね  前月末日=Today()-day() 従って、翌月の任意の日付からその日を引くと当月末日になります。 この翌月任意の日は月によって28日、29日、30日、31日とあります。  翌月の任意の日付=If(day(日付)<5,日付+35,日付+28) 当日末日はこの2式を入れ子にします。  当日末日=If(day(日付)<5,日付+35,日付+28)-day(If(day(日付)<5,日付+35,日付+28))

100POINT
質問者

お礼

ご教授ありがとうございます

  • chayamati
  • ベストアンサー率41% (254/607)
回答No.4

今晩は 失礼ながらExcelの日付の概念を理解されていないようです。 エクセルでの日付は1900年1月1からの経過日数です。 しかし自然数ではありません、小数点以下は時、分、秒を含めて シリアル値と呼んで、時間列として取り扱われています。 従って、1時間=1/24 1分=1/(24*60) 1秒=1/(24*60*60) 因みに2018年10月1日を数値形式で表示すると43374と表示されます 即ち1900年1月1日から数えて43,374日目にあたるということです。

100POINT
質問者

お礼

ご教授ありがとうございました

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

=IF(BA4="","",IF(MID(BA4,5,2)),"","",●)  ------ダメです はい、その数式はでたらめなので直しようがありません。 =IF(BA4=0,"",IF((MID(BA4,5,2))=MONTH(TODAY()),"●","")) ------ダメです はい、BA4にはBB4から月数の2桁切り出しているのでMID(BA4,5,2)は文字がありません。BA4は月数の文字列なので数値化して当月の月数と比較すれば正解です。 =IF(BA4=0,"",IF(BA4=MONTH(TODAY()),"●","")) ------ダメです はい、上記のようにBA4は文字列なので文字列と数値を比較すると同じになりません。(常に[文字列<>数値]になる) 数値化はVALUE関数で数字のみの文字列を数値化します。 他の方法として数字の文字列に1を乗ずるか0を加算すると数値化できます。

100POINT
質問者

お礼

ご教授ありがとうございました

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

ステップ4の条件を満足することはあり得ない! 何故なら、『「BA4」で得た』月は「現在の当月」より2、3箇月後なので、一致することがないから。 再考すべし!

関連するQ&A

  • 特定期間の計算についてご教授ください

    A1セルに入れた8桁の数字(日付YYYYMMDD)の文字列が入力されていて 右から1.2桁の数字DDが1から15(1日から15日)の場合MM(当月)の2ヶ月先の末日を求め 右から1.2桁の数字DDが16から31(16日から月末)の場合MM(当月)の3ヶ月先の末日を求める A1セル「20140204」を入力 B1セル =IF(MID(A1,7,2)<=15,EOMONTH(A1,2),EOMONTH(A1,3)) B2セル =IF(MID(A1,7,2)<=15,EOMONTH((MID(A1,5,2),2),EOMONTH((MID(A1,5,2),3)) B3セル =IF(MID(A1,7,2)<=15,EOMONTH(DATE(INT(A1/10000),MOD(INT(A1/100),100),MOD(A1,100)),2),EOMONTH(DATE(INT(A1/10000),MOD(INT(A1/100),100),MOD(A1,100)),3)) B1、B2、B3のような式で試してみましたが どうしても最後EOMONTHのところがうまくできません どなたかご教授くださいますようよろしくお願いいたします

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

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

  •  EXCELのIF関数についての質問です。

     EXCELのIF関数についての質問です。  IF関数については、自信がありました。 たとえば、G13をテストの得点だとして、80点よりも高い得点なら合格、さもなければ不合格と表示させてければ、if(G13>80,"合格","不合格")でOKのはずです。  ところが、今日何歳なのかを表示させる場合、G13に生年月日をいれて、 IF(OR(MONTH(TODAY())>MONTH(G13),AND(MONTH(TODAY())=MONTH(G13),DAY(TODAY())>=DAY(G13)))=TRUE,YEAR(TODAY())-YEAR(G13),YEAR(TODAY())-YEAR(G13-1))と引継ぎをうけました。  この中にあるTRUEの意味がわかりません。私の解釈では、「今日の月が誕生月よりも絶対値が大きい」又は「今日の月と誕生月が同じで、今日の日が誕生の日の絶対値と同じか多い」場合、年齢は「今日の年」-「誕生の年」、そうでない場合は年齢は「今日の年」-1-「誕生の年」です。  なので、TRUEはなくてもよいと思い、削除してみましたが、エラーが出ました。  よくわからないので、お手数ですが、教えてください

  • IF関数の中の多数のIF関数をすっきりさせたい!

    Excel2010です。 excelで条件に一致したセルの隣のセルを取得するにはVLOOKUP関数を使えばできますが、 条件に一致したセルの隣のセルに入っている計算式を利用することはできますか? 現在、IF関数で下記のようなながったらしい条件式が入っているのですが、これをもっとすっきりしたく、 何かいい方法はないかと思い相談させていただきました。 =IF([@基準月]="","",IF(COUNTIF([@請求形態],"*前*"),[@基準月],IF([@請求形態]="年1後",EOMONTH([@基準月],-11),IF([@請求形態]="2ヶ月後",EOMONTH([@基準月],-1),IF([@請求形態]="3ヶ月後",EOMONTH([@基準月],-2),IF([@請求形態]="6ヶ月後",EOMONTH([@基準月],-5),"")))))) (請求形態に"後"が含まれる式は別に作ってます)        A       B       C       D 1    基準月   請求形態   期間始    期間終 2    H26.2    6ヶ月後    H25.9     H26.2 3    H26.3    年1前 H26.3     H27.2 4 A列,B列に値を入れるとC列,D列が自動で入るようにしたいのです。 請求形態の種類は年1前、年1後、2ヶ月前、2ヶ月後・・・・と8種類あります。現在作っているIF関数でも別に問題はないのですが、もっとすっきりできるものならさせたいです。 どなたかお分かりになる方がいらっしゃいましたら教えてください。 宜しくお願い致します。

  • IF関数のネスト

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

  • ifを繰り返すと書式設定が反映されない

    Excel2010です。 O2のセルに入る数値を通貨の円マークが入る書式設定をしています。なおかつ、O2には以下の長い関数が入っています。IFが一個だけなら、円マークが出るのですが、2個以上追加すると、円マークが出ません。試しに他のセルに通貨の円マーク付きの書式設定をして=O2の値を取得しても、書式設定が反映されません。 ちなみに、C1からN1までは1月~12月のタイトルがあり、C2からN1までは各月の金額が入っています。$R$1は今月の月の数字が入っており、$R$1の値が1ならC2の値をO2に表示、$R$1の値が2ならD2の値をO2に表示するようにしています。$R$1には=month(Q1)関数が入っていて、Q1には=today()が入っています。 よろしくお願いします。 =IF($R$1=1,C2,"")&IF($R$1=2,D2,"")&IF($R$1=3,E2,"")&IF($R$1=4,F2,"")&IF($R$1=5,G2,"")&IF($R$1=6,H2,"")&IF($R$1=7,I2,"")&IF($R$1=8,J2,"")&IF($R$1=9,K2,"")&IF($R$1=10,L2,"")&IF($R$1=11,M2,"")&IF($R$1=12,N2,"")

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

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

  • DATE関数が正しく表示されない。

    こんにちは 例えばA1にTODAY関数、A2に数値データが入れてあり(例:0000000600) 別セルに =DATE(MID(A2,8,1),MONTH(A1),DAY(A1)) と関数を使ったのですが、年度が2006になるはずが1906と表示されてしまいます。 解決方法があれば教えてください。 お願いします。

  • エクセル 売掛遅延月数 2

    おせわになります。先日ここで質問し、解決していただいた内容に 重ねて新たな質問をさせてください。 エクセルで売掛金回収遅延管理をしております。 売上計上日(月末)から翌月末日が回収期限で、 それ以降は遅延扱いとしています。 現在(2007/04/30)までの遅延月数を、 レベルに分け、金額を表示するには 例えば↓ 現在2007/04/30で A(売上計上日)、B(金額)、C(遅延12ヶ月超)、D(遅延12ヶ月未満) 1、2005/10/31 、100000、  100000    、 2、2006/12/31 、80000、          、  80000 というデータがあり、上記の表だとC1には100000が、D2には80000が 表示されるように関数を組むには C2セルに  =IF(TODAY()>EOMONTH(A2,12),B2,"") D2セルに  =IF(AND(TODAY()<=EOMONTH(A2,12),TODAY()>EOMONTH(A2,1)),B2,"") をそれぞれ入力して下方向にコピーします と、これでうまくいって入るんですが、 C2セルに  =IF(TODAY()>EOMONTH(A2,12),B2,"") と入れて、下方向にコピーて A列に空白セルがあった場合で、 Bに何かしら数値(合計値など)が入っている場合 もC列にデータが入ってしまいます。 といっても、行数が多いので、下方向コピーは手放せないです。 空白セルは読まずに、C列には何も表示されないようにするには どのようにしたらよろしいでしょうか? どなたか教えてください。宜しくお願いいたします。

  • エクセル 関数 MONTH

    いつも大変御世話になっております。 WindowsXP環境でエクセル2003を使用しています。 C5セル内に以下文字を入力して「test_201111.txt」を表示しています。 ※YEAR(TODAY()):YYYY / MONTH(TODAY()):MM ="test_"&YEAR(TODAY())&""&MONTH(TODAY())&".txt" これは10~12月は関数箇所は表示されるんですが 1~9月はMONTH(TODAY())自体が頭に"0"がつかないので困っています。 これはもうどうしようもないのでしょうか? 1~9月には頭に0をつけたいのです。 マクロを使ったり、他のセルにYYYYMMを記載してそこから日付を読み込ますようなものは 作成せずに、上記関数だけでどうしても解決したいのですが可能でしょうか? もしご存知の方がいらっしゃるようでしたら、ご教授願いますでしょうか? 以上、何卒宜しくお願い致します。

専門家に質問してみよう