Excel VBAでの日付検索について
Excelに下記のように1時間おきの日時(A列)と値(B列)が数か月分入力されています。
UserFormで入力された月の、日別の合計した値を別ブックに出力したいと思っています。
A列の日時は、セルの書式設定でユーザ定義の「yyyy/m/d hh:mm」となっています。
例)UserFormで8月と入力されたら、8/1の0:00~23:00の値(B列)を合計し、別ブックへ出力し、それを月末(8/31)分まで繰り返し計算し出力したい。
A B
2010/8/1 0:00 345.5
2010/8/1 1:00 309.4
2010/8/1 2:00 364.2
: :
: :
: :
2010/8/1 23:00 359.0
2010/8/2 0:00 339.9
2010/8/2 1:00 357.3
現在、下記のようなVBAにして、UserFormで入力された月の1日のデータが入力されている行番号を取得
しようとしているのですが、うまく検索されません。
どなたかご教授下さい。
Dim Obj As Object
Dim HitRow As Long
Dim Cerday As Long
Dim myDay As Date
myDay=txt_年.Value & "/" & txt_月.Value & "/1"
Cerday=DateValue(myDate)
Set Obj=Worksheets("sheet1").Cells.Find(Cerday,LookAt:=xlwhole)
If Obj Is Nothing Then
MsgBox "見つかりません。"
Else
HitRow=Worksheets("sheet1").Cells.Find(Cerday,LookAt:=xlwhole).Row
End If
No.1
- 回答日時:
Dim Cerday As Variant
にしてください。
また
Cerday=DateValue(myDate)
↓
Cerday=DateValue(myDay)
ではないでしょうか。
No.2ベストアンサー
- 回答日時:
時間も同一セルにあるのを見落としてました
Dim myDay As String
myDay = txt_年.Value & "/" & txt_月.Value & "/1*"
Set Obj = Worksheets("sheet1").Cells.Find(myDay, LookAt:=xlWhole)
にしてください。
あとループして全て探し出さないとダメなんじゃないでしょうか
With Worksheets("sheet1").Range("a:a")
Set Obj = .Find(myDay, LookIn:=xlValues)
If Not Obj Is Nothing Then
firstAddress = Obj.Address
Do
Debug.Print Obj.Row
Set Obj = .FindNext(c)
Loop While Not Obj Is Nothing And Obj.Address <> firstAddress
End If
End With
No.3
- 回答日時:
こんにちわ、もう解決してるかもしれないけど
Sub test11()
Dim Obj As Range
Dim HitRow As Long
Dim Cerday As String
'String に変える
Dim myDay As Date
With Worksheets("Sheet1")
myDay = DateValue("2010/08/01")
Cerday = Application.Text(myDay, .Range("A2").NumberFormat)
'表示形式をセルのものと合わせる ↑
MsgBox Cerday
Set Obj = .Range("A:A").Find(Cerday, LookAt:=xlWhole, LookIn:=xlValues)
'LookIn:=xlValues を指定する。
If Obj Is Nothing Then
MsgBox "見つかりません。"
Else
MsgBox Obj.Address
HitRow = Obj.Row
End If
End With
End Sub
'************************************************
Sub test22()
Dim HitRow As Long
Dim Cerday As Long
With Worksheets("Sheet1")
Cerday = DateValue("2010/8/1")
MsgBox Cerday
On Error Resume Next
HitRow = Application.WorksheetFunction.Match _
(Cerday, .Range("A:A"), 0)
'Cells を Range("A:A")に変える Cellsではだめ
If Err.Number <> 0 Then
MsgBox "見つかりません。"
Else
MsgBox HitRow
End If
On Error GoTo 0
End With
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) VBAについて 3 2022/06/19 18:19
- Visual Basic(VBA) オブジェクトが見つかりません 1 2023/06/24 19:43
- Visual Basic(VBA) VBAコードが作動せず、どこに問題があるのか教えて下さい。 3 2023/06/13 13:20
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) vbaを早くしたい 5 2022/09/09 10:58
- Excel(エクセル) 日付で矢印マクロ 4 2023/07/25 16:47
- Visual Basic(VBA) vba 重複データ合算 5 2023/07/05 18:55
- Visual Basic(VBA) VBAで日付入力しているのですが 4 2023/03/02 11:25
- Visual Basic(VBA) ユーザーフォームに2つのコンボボックス銀行名「ConboBox1」支店名を「ConboBox2」とし 4 2022/08/03 17:34
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ExcelVBAを使って、値...
-
特定のセルが空白だったら、そ...
-
i=cells(Rows.Count, 1)とi=cel...
-
Excelのハイパーリンクにマクロ...
-
【Excel】指定したセルの名前で...
-
Excelで指定した日付から過去の...
-
DataGridViewのセル編集完了後...
-
【Excel VBA】指定行以降をクリ...
-
EXCELで変数をペーストしたい
-
Excel vbaで特定の文字以外が入...
-
【VBA】指定したセルと同じ値で...
-
特定行の色を変えたい(FlexGrid)
-
VBAでセルをクリックする回...
-
EXCELのVBA-フィルタ抽出後の...
-
スプレッドシートの数値列に対...
-
VBAの計算で@が出てしまう件
-
セル色なしの行一括削除
-
3桁または4桁の数値を時刻に...
-
”戻り値”が変化したときに、マ...
-
TODAY()で設定したセルの日付...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ExcelVBAを使って、値...
-
特定のセルが空白だったら、そ...
-
【Excel VBA】指定行以降をクリ...
-
i=cells(Rows.Count, 1)とi=cel...
-
【Excel】指定したセルの名前で...
-
Excelで指定した日付から過去の...
-
特定の文字を条件に行挿入とそ...
-
Excel VBA、 別ブックの最終行...
-
EXCELで変数をペーストしたい
-
Excelのプルダウンで2列分の情...
-
Excel vbaで特定の文字以外が入...
-
TODAY()で設定したセルの日付...
-
screenupdatingが機能しなくて...
-
DataGridViewの各セル幅を自由...
-
Sub 要具ライフ() ActiveSheet....
-
【EXCEL VBA】Range("A:A").Fi...
-
VBAを使用した時間管理
-
VBAでセルをクリックする回...
-
セル色なしの行一括削除
-
エクセルVBAでコピーして順...
おすすめ情報