プロが教えるわが家の防犯対策術!

いつもお世話になっております
遣りたいこと

F列に届日 G列に生年月日があります。
生年月日より20日前の日届日が
出された件数が知りたいです。

届日      生年月日
2022/4/10   2022/5/16
2022/5/16の20日前なので1件という感じです。

下記のコードは自分で考えましたが、
12件中 正解は1件ですが、
12件とでました。
わかる方おしえてくれませんでしょうか



Dim i As Long
Dim cnt As Long
cnt = 0

For i = 4 To Cells(Rows.Count, 7).End(xlUp).Row
If Cells(i, "F").Value <= Format(DateDiff("d", 20, Cells(i, 7).Value), "yyyy/mm/dd") Then
cnt = cnt + 1
End If
Next

Range("F1").Value = cnt

「日付の計算方法」の質問画像

A 回答 (2件)

こんばんは


Formatの意味は?調べてみてください

20日前を算出?とか
If Cells(i, "F").Value <= DateAdd("d", -20, Cells(i, 7).Value) Then

Date型に右辺を変えるとか・・多分しない
If Cells(i, "F").Value <= CDate(Format(DateDiff("d", 20, Cells(i, 7).Value), "yyyy/mm/dd")) Then

Formatで合わせるとか・・・しないか・・計算できるかも知れません
If Format(Cells(i, "F").Value, "yyyy/mm/dd") <= Format(DateDiff("d", 20, Cells(i, 7).Value), "yyyy/mm/dd") Then
    • good
    • 0
この回答へのお礼

いつもお世話になっております
うまくいきました。
If Format(Cells(i, "F").Value, "yyyy/mm/dd") <= Format(DateDiff("d", 20, Cells(i, 7).Value), "yyyy/mm/dd") Then
ありがとうございました。

お礼日時:2022/07/02 07:38

誤解を与えるかも知れませんので


表示の場合、Formatを使う必要は無いのでは?
単に
If Cells(i, "F").Value <= DateDiff("d", 20, Cells(i, 7).Value) Then
で良いと思いますよ
    • good
    • 0
この回答へのお礼

いつもお世話になっております

おなじ 12です。
うまくいきませんです。
ありがとうございました。

お礼日時:2022/07/02 07:37

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!