- ベストアンサー
エクセル2003VBAでデータの検索方法を教えてください
- エクセル2003VBAでAシートのセルに入力されている日にちと時間をBシートで検索したい場合、一致する場合は他の項目とともにCシートにコピーし、一致しない場合は次のデータを検索します。
- AシートとBシートにそれぞれデータベースがあります。エクセル2003VBAを使ってAシートに入力されている日にちと時間をBシートで検索し、一致する場合は他の項目とともにCシートにコピーする方法を教えてください。
- エクセル2003VBAの質問です。AシートとBシートにそれぞれデータベースがあります。Aシートの日にちと時間をBシートで検索し、一致する場合は他の項目もコピーする方法を教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
シートのレイアウトがわかりませんので Sheets("A") Sheets("B")ともにA列1行目から下に切れ目なくデータがあるものとします。 Sheets("B")のデータを上から順にSheets("A")から検索し、一致したら、その行を、貼付先シートの Sheets("C") にA列1行目から下に向かって順に貼り付けます。 Sub test01() Dim ws1 As Worksheet, ws2 As Worksheet, ws3 As Worksheet Dim rng As Range Dim i As Long, n As Long Set ws1 = Sheets("A") '検索先のシート Set ws2 = Sheets("B") '検索データのシート Set ws3 = Sheets("C") '貼付先シート With ws1.Columns("A") '完全一致でシートの頭から検索(A列) i = 1 Do Until ws2.Cells(i, "A").Value = "" 'ws2のデータがなくなるまで Set rng = .Find(What:=ws2.Cells(i, "A").Value, LookAt:=xlWhole, After:=.Cells(.Cells.Count)) '検索 If Not rng Is Nothing Then 'あれば n = n + 1 '貼り付け先行カウント rng.EntireRow.Copy ws3.Cells(n, "A") '行のコピペ End If i = i + 1 '検索データ行カウント Loop '繰り返し Set rng = Nothing End With Set ws1 = Nothing Set ws2 = Nothing Set ws3 = Nothing End Sub
その他の回答 (1)
- merlionXX
- ベストアンサー率48% (1930/4007)
> 上手くいきません。 何がどううまくいかないのか書いてくれないとこちらではわかりません。 > 何がいけないのでしょうか? あなたの書き換えたコードをみないとわかりません。 こちらであれこれ想像して、手直しするにしても情報がたりません。 > 検索データのシート名:CSV これはエクセルのファイルと別にCSV形式のファイルがあるということですが?それとも単にCSVという名前のシート(同一ファイル内)なのですか? また、貼り付け先をB列にするならさきほどの回答のような行まるごとのコピーではできません。貼り付け先シートに持っていきたいデータは「0群加工」シートのどの列にあるのですか?
お礼
説明不足ですみません。 あれから自分で手直ししたところ、無事解決しました。 お騒がせしてすみませんでした。 ありがとうございます。
お礼
早速の回答ありがとうございます。 シート名とセル番地を、実際のものとあわす為、コードを書き換えさせて頂きましたが、上手くいきません。 何がいけないのでしょうか? 実際の名称 検索先シート名:0群加工 E2セルから下のデータ 検索データのシート名:CSV A6セルから下のデータ 貼り付け先シート名:完了 B2セルから下に貼り付け お手数をおかけしますが、教えて頂けないでしょうか?