![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
いつもお世話になっております。
下記のコードを
Range("A4:A21"), ">=" & DateSerial(2020, i - 54, 1),
Range("A4:A21"), "<" & DateSerial(2020, 1, 31))
DateSerial(2020, i - 54, 1) i -54と入力すると2020/1/1 から2020/1/31
までとなります。
DateSerial(2020, i - 6, 1)だと正しくなりません。
偶然発見したのです。
わかる方おしえてくれませんでしょうか
Sub ci()
Dim i, j As Long
Dim sumR As Range
Dim NameR As Range
Set sR = Range("D4:D21") '金額
Set NameR = Range("C4:C21") '商品
For i = 6 To 10
Cells(i, "G").Value = WorksheetFunction.SumIfs(sR, NameR, Cells(i, "F"), _
Range("A4:A21"), ">=" & DateSerial(2020, i - 54, 1), Range("A4:A21"), "<" & DateSerial(2020, 1, 31))
Cells(i, "H").Value = WorksheetFunction.CountIfs(NameR, Cells(i, "F"))
Next
End Sub
![「SumIFsとDateSerial vb」の質問画像](http://oshiete.xgoo.jp/_/bucket/oshietegoo/images/media/b/542572098_5e26e1ac6a204/M.jpg)
No.1ベストアンサー
- 回答日時:
こんばんは!
直接の回答ではありません。
コードで理解できない部分があるので、少しだけ・・・
DateSerial関数で
>DateSerial(2020, i - 54, 1)
のような書き方をされていますね。
DateSerial(Year,Month,Day)
となりますので、Monthの部分は1~12の数値になるのが一般的です。
お示しのコードでは「i」は6~10までの変数としていますよね。
(おそらく6行目~10行目までとしたいと思います)
仮に i=6 の場合 Monthの部分は -48 となりますね。
Excel的には 2015/12/1 というシリアル値として処理してくれますので
エラーもなく4年以上前からのデータも拾ってくれると思います。
ちなみに
DateSerial(2020, 0, 1)
とすれば 2019/12/1 のシリアル値になります。
※ 余計なお世話かもしれませんが、
変数の宣言部分の
>Dim i, j As Long
は
>Dim i As Long
>Dim j As Long
のように宣言した方が良いと思います。
Dimを何度も入力するのが嫌なら
>Dim i As Long, j As Long
のようにしても構いませんので、一つずつ丁寧に宣言するコトをおススメします。
大勢に影響はありませんが、
お示しの宣言方法だと
「i」は型を宣言していないコトになり、Variant型での変数になります。m(_ _)m
ありがとうございました。
dim m as long
m = 1
Range("A4:A21"), ">=" & DateSerial(2020, m, 1),
Range("A4:A21"), "<" & DateSerial(2020, m+1, 0))
---略
Next
m = m +1
にしました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 今日の日付が過ぎたらその行を削除したい 1 2023/04/01 20:06
- Visual Basic(VBA) Dateserialで データ抽出 2 2022/06/26 21:07
- Visual Basic(VBA) Sheet2の日付をキーにオートフィルターで2023年1月のデータを抽出し、Sheet3へ書き出すた 2 2023/03/06 23:57
- Excel(エクセル) VBAの指示の内容 昨日こちらでご教示頂いたのですが初心者な為、一つ一つの指示が何をやっているのかわ 2 2022/10/25 18:08
- Excel(エクセル) VBAで組み合わせ算出やCOUNTIFSの処理を高速化したいです。 4 2022/04/07 02:38
- Visual Basic(VBA) 【VBA】先月分の取得ができない理由が分かりません。 2 2022/04/24 11:16
- Visual Basic(VBA) VBA処理追加 こちらでご教示頂いたのですが回答完了させてしまいましたのでこちらからまた質問させてく 2 2022/10/27 09:57
- Visual Basic(VBA) VBAコードが作動せず、どこに問題があるのか教えて下さい。 3 2023/06/13 13:20
- Visual Basic(VBA) Sheet1のA列にコードB列にメアド、Sheet2のB列にコード一覧とD列にメアド一覧があり、Sh 3 2022/10/19 11:57
- Visual Basic(VBA) VBA 請求書自動作成 3 2022/04/24 01:58
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルVBA 宣言Dimの場所
-
COBOLのPERFORM文
-
名前が二重に定義されています
-
C# try-catch でcatchに飛ばす方法
-
Response.Redirectで引数2つの...
-
隠しフィールドをVBScriptでの...
-
Outlookで添付ファイルの有無を...
-
Tableを動的に増やしたい。
-
fopenでエラーとなる
-
画面のリフレッシュを意図的に...
-
VB6でのPL/SQLの実行について
-
北原化粧品をお使いの方へ
-
エラー内容について
-
FileCopy時のエラー
-
ASPからACCESS200...
-
ASPへのデータの受け渡しについて
-
このページの状態情報は無効で...
-
パケットの書込みエラーについて
-
イベントID 2002について
-
GridViewからテンプレートフィ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルVBA 宣言Dimの場所
-
ソケット通信で同時受信の制限?
-
VBSにてサーバー中のエクセルフ...
-
vbscriptの変数宣言
-
VBSでIEを起動し、拡大率を変更...
-
TCPサーバ bind関数のエラーに...
-
式はメソッドではありませんと...
-
golang 空文字判定について
-
名前が二重に定義されています
-
ACCESSのAutoKeysマクロでアク...
-
CreateObjectの同時実行時について
-
EXCEL VBA API宣言でコンパイル...
-
SumIFsとDateSerial vba
-
ASPエラー時の内容を任意で...
-
エクセル同一セル内の指定文字...
-
COBOLのPERFORM文
-
C# try-catch でcatchに飛ばす方法
-
FileCopy時のエラー
-
Response.Redirectで引数2つの...
-
EXECLマクロでshapeがグルーフ...
おすすめ情報