前提・実現したいこと
ファイル内から「先週の月曜日の6:00以上から今週の月曜日の5:59以下まで」を集計したい。
(5時と17時を識別させたい。)
現在、万単位のアクセスログデータ集計を行っております。
ファイル数は可変で2~6個あり(変数numにファイル数を格納)上記処理は最終ファイルでの処理となります。
また、集計対象のデータ形式は以下の通りとなります。
(例)
A列 B列 C列 D列 E列
2019/2/18 17:58:00 項目A 項目B 項目C 項目D
2019/2/18 17:58:09 項目A 項目B 項目C 項目D
2019/2/18 17:59:03 項目A 項目B 項目C 項目D
・
・
・
こちらの形式が何万件と続きます。
発生している問題・エラーメッセージ
今回発生している問題は、「今週の月曜日の5:59以下まで」の処理となります。
「5:59」以前のデータを集計対象としたいのですが、逆から検索しているせいか【「17:59」以前のデータ】で引っかかってしまい、希望とは異なる「先週の月曜日の6:00以上から今週の月曜日の17:59以下」までが集計されてしまいます。
「5:59」が存在しない場合は「5:58」までと、どんどん遡っていくため、上から検索するのは難しいのではないかと思っております。
「17時欄」が引っかからない良い解決策があれば教えていただけますと幸いです。
お手数をお掛けいたしますがよろしくお願いいたします。
該当のソースコード
vba
1 2'> ■ 最終ファイルの処理 ■ 3 ElseIf i = num Then 4 x = 1 5 6 '>ファイル内から「今週の月曜日」を検索する。 7 Set myRange = Range("A" & x & ":" & "A" & LastRow) 8 Set myObj = myRange.find(thisMonday, LookAt:=xlPart, SearchDirection:=xlPrevious) '逆検索 9 10 If myObj Is Nothing Then 11 MsgBox "'" & thisMonday & "'はありませんでした" 12 Exit Sub 13 Else 14 x = myObj.Row '逆から検索し、今週の月曜日が見つかった行数を変数xへ格納 15 16 '>ファイル内から「今週の月曜日」の「5:59以前」を検索する。 17 Set myRange = Range("A" & x & ":" & "A2") 18 Set myObj = myRange.find(" 5:5?", LookAt:=xlPart, SearchDirection:=xlPrevious) 19 20 If myObj Is Nothing Then 21 MsgBox "'" & "5:59以前" & "'はありませんでした" 22 Exit Sub 23 Else 24 25 x = myObj.Row '5:59以前が見つかった行数を変数xへ格納 26 sh_wrk.Range("A2" & ":" & "E" & x).Copy 27 ThisWorkbook.Worksheets("貼り付け用").Range("A" & this_lastRow).PasteSpecial Paste:=xlPasteAll 28 Application.DisplayAlerts = False 29 Workbooks(csvname).Close 30 Application.DisplayAlerts = True 31 End If 32 End If 33
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/05/16 11:23
2019/05/17 06:03
2019/05/17 06:07
2019/05/20 06:37