『VBA 別シートの日付の一致』(ぜん) こんにちは 下記のコードを作成したのですが行き詰りましたのでご教授頂ければと思います。 Sub test() Dim 日付 As Date Dim 列番号 As Long 日付 = Sheets("作業用").Cells(18, 2).Value Sheets("集計表").Select For 列番号 = 6 To Cells(11, Columns.Count).End(xlToLeft).Column Step 2 If Cells(11, 列番号).Value = 日付 Then Exit For Next If Cells(11, 列番号).Value <> 日付 Then MsgBox ("対象の日付が見つかりませんでした。") Exit Sub ・ ・ ・ 作業用のシートのセルは2018/4/2となっていて、 集計用のセルの日付を=DATE(YEAR($J$9),MONTH($J$9),DAY($J$9)+1)で出しているのですが、 これを一致させるためにはどうしたらいいのでしょうか? < 使用 Excel:Excel2007、使用 OS:Windows7 > ---- 日付同士なら一致しますが? (seiya) 2018/04/10(火) 16:46 ---- あの〜、勘違いでしたらお許しを。。。 ^^ 同一日付があれば、そのままループを抜け。 何もしないで、終了しているのでは。。。。。。??; それとも、 何かエラーが出るのでしょうか。 一列飛ばし、と云うのも気にはなりますが。。。日付が一列飛ばしで。。。 なのでしょう。 でわ (隠居じーさん) 2018/04/10(火) 17:34 ----  >集計用のセルの日付を=DATE(YEAR($J$9),MONTH($J$9),DAY($J$9)+1)で出しているのですが、 J9のセルの値が日付なら=J9+1でも同じでは? あと、絶対参照だと数式をどのセルにコピーしても同じなってしましますがいいのかな? で、本題。 スッテップ実行をしてみて、 動作を確認してみては? こちらでは、書いてある通りの動作をしていることしか確認できません。 http://www.239-programing.com/excel-vba/basic/basic023.html (まっつわん) 2018/04/10(火) 17:56 ---- 申し訳ありません。 私の勘違いでした。 ただ別の問題が生じましてお力添え頂ければと思います。 下記のようにコードを修正し日付を一致させることが出来ました。 しかし作業用シート(日報です)で2018/4/1〜毎日実行します。 4/4分を実行すると 集計表シート(月報です)の2018/4/3や2018/4/2など 前日分までの実績が0になってしまいます・・・ なぜでしょうか? Sub 正方形長方形1_Click() Dim 日付 As Date Dim 列番号 As Long Application.ScreenUpdating = False '画面描画停止 日付 = Sheets("作業用").Cells(9, 2).Value Sheets("集計表").Select For 列番号 = 1 To Cells(24, Columns.Count).End(xlToLeft).Column If Cells(24, 列番号).Value = 日付 Then Exit For Next If Cells(24, 列番号).Value <> 日付 Then MsgBox ("対象の日付が見つかりませんでした。") Exit Sub End If Sheets("集計表").Select Cells(25, 列番号).Select ActiveCell.Formula = _ "=SUMIFS(作業用!J:J,作業用!C:C,""A"")" If ActiveCell = 0 Then ActiveCell = "" End If Cells(26, 列番号).Select ActiveCell.Formula = _ "=SUMIFS(作業用!R:R,作業用!C:C,""A"")" If ActiveCell = 0 Then ActiveCell = "" End If Cells(27, 列番号).Select ActiveCell.Formula = _ "=SUMIFS(作業用!S:S,作業用!C:C,""A"")" If ActiveCell = 0 Then ActiveCell = "" End If Cells(28, 列番号).Select ActiveCell.Formula = _ "=IFERROR((AverageIf(作業用!C:C, ""A"",作業用!T:T)), """")" ActiveCell.NumberFormatLocal = "#,##0.0" ・ ・ ・ ・ (ぜん) 2018/04/11(水) 15:08 ---- 余計なお節介かもしれないですが、 (1) 〇〇を選択→選択した(アクティブになっている)ものを××って書き方はダメではないですが、 どうしても冗長に見えるので、一般的には〇〇を××するというような表現にするとおもいます。 (2) インデントを入れると一般的には読みやすくなるので、誰かに見てもらうことを前提にするなら きちんと入れた方が良いです。 (1)、(2)を踏まえて整理するとこんな感じです。参考まで。 Sub 正方形長方形1_Click() Dim 日付 As Date Dim 列番号 As Long 日付 = Sheets("作業用").Cells(9, 2).Value With Sheets("集計表") '■↓このループで何をやりたいのか不明■ For 列番号 = 1 To .Cells(24, .Columns.Count).End(xlToLeft).Column If .Cells(24, 列番号).Value = 日付 Then Exit For Next If .Cells(24, 列番号).Value <> 日付 Then MsgBox "対象の日付が見つかりませんでした。" Exit Sub End If With .Cells(25, 列番号) .Formula = "=SUMIFS(作業用!J:J,作業用!C:C,""A"")" If .Value = 0 Then .Value = "" End With With .Cells(26, 列番号) .Formula = "=SUMIFS(作業用!R:R,作業用!C:C,""A"")" If .Value = 0 Then .Value = "" End With With .Cells(27, 列番号) .Formula = "=SUMIFS(作業用!S:S,作業用!C:C,""A"")" If .Value = 0 Then .Value = "" End With With Cells(28, 列番号) .Formula = "=IFERROR((AverageIf(作業用!C:C, ""A"",作業用!T:T)), """")" .NumberFormatLocal = "#,##0.0" End With End With End Sub (もこな2) 2018/04/11(水) 18:45 ----  >前日分までの実績が0になってしまいます・・・  >なぜでしょうか? なぜでしょうね? ステップ実行して、どのタイミングで0になるか確認してみては? 保存せずに閉じたら昨日のままで開けますよね? http://marupeke296.com/DBG_No1_Step.html (まっつわん) 2018/04/11(水) 19:19 ---- もこな2様有難うございます。 参考にさせて頂きます。 そして0になってしまう原因が分かりました。 実行すると集計表のセルに"=SUMIFS(作業用!J:J,作業用!C:C,""A"")"の数式が入りますが 作業用のシートは日々上書きしていくので 集計表の数字が変わってしまいました。 集計表に数式ではなく結果(値)がセルに入るようにしたりと 何かいい方法はありますでしょうか? 説明が悪く申し訳ありません。 (ぜん) 2018/04/12(木) 11:00