Excel2010で以下のことをしたいのですが、VBAがあまりできないのでやれません。
どうか助けてください。
・sheet1のA列に検索用の番号(例として商品番号)が入力されています。
・sheet2はデータベースで、A列に商品番号B列に商品名、C列に国名、D列に価格・・~その後J列まで情報が入っています。(行数は1万行)
・sheet1に入っている商品番号でデータベースから行をピックアップし、該当の行をsheet1のB列以降にコピーしたいのです。
(シート3を新しく作っても構いません。やりやすい方で)
・ただし、同じ商品番号で複数の行がヒットしますので、複数の行がヒットしたら行を追加しながら、行をコピーしたいです。
どのように書いたら良いか参考になるURLだけでもご教授ください。
よろしくお願いします。
No.3ベストアンサー
- 回答日時:
もう回答が付いてますね、でもせっかく書いたのだからあげときます(笑)
Sub main()
Dim i1 As Long, i2 As Long, i3 As Long
Dim LastRow1 As Long, LastRow2 As Long
'各シートのデータの最終行を取得
LastRow1 = Worksheets("Sheet1").Cells(Rows.Count, 1).End(xlUp).Row
LastRow2 = Worksheets("Sheet2").Cells(Rows.Count, 1).End(xlUp).Row
i3 = 1
Worksheets.Add 'ワークシート3を作成
ActiveSheet.Name = "Sheet3"
'シート1の文字列がシート2にあるか探し、あればシート2の該当行をシート3にコピー
For i1 = 1 To LastRow1
For i2 = 1 To LastRow2
If Worksheets("Sheet2").Cells(i2, 1) = Worksheets("Sheet1").Cells(i1, 1) Then
Worksheets("Sheet2").Cells(i2, 1).EntireRow.Copy Destination:=Worksheets("Sheet3").Rows(i3)
i3 = i3 + 1
End If
Next i2
Next i1
End Sub
No.2
- 回答日時:
>複数の行がヒットしたら行を追加しながら、行をコピーしたいです。
そのようにしてみます。
マクロはふつーに検索してコピーするだけの、VBAのヘルプに出てくる基本的な使用例をほぼそのまま利用してみます。
sub macro1()
dim r as long
dim c as range
dim c0 as string
worksheets("Sheet1").select
for r = range("A65536").end(xlup).row to 1 step -1
set c = worksheets("Sheet2").range("A:A").find(what:=cells(r, "A").value, lookin:=xlvalues, lookat:=xlwhole)
if not c is nothing then
c0 = c.address
do
c.entirerow.copy
cells(r, "A").offset(1).insert
set c = worksheets("Sheet2").range("A:A").findnext(c)
loop until c.address = c0
cells(r, "A").entirerow.delete shift:=xlshiftup
end if
next r
end sub
実際にあなたがヤリタイ事に応じて、自力で適切に応用してご利用ください。
No.1
- 回答日時:
こんばんは!
一例です。
両Sheetとも1行目は項目行で、データは2行目以降にあるとします。
標準モジュールにコピー&ペーストしてマクロを実行してみてください。
Sub Sample1()
Dim i As Long, lastRow As Long, wS As Worksheet
Set wS = Worksheets("Sheet2")
Application.ScreenUpdating = False
With Worksheets("Sheet1")
For i = 2 To .Cells(Rows.Count, "A").End(xlUp).Row
wS.Range("A1").AutoFilter field:=1, Criteria1:=.Cells(i, "A")
lastRow = wS.Cells(Rows.Count, "A").End(xlUp).Row
If lastRow > 1 Then
Range(wS.Cells(2, "A"), wS.Cells(lastRow, "J")).Copy .Cells(Rows.Count, "B").End(xlUp).Offset(1)
End If
Next i
wS.AutoFilterMode = False
lastRow = .Cells(Rows.Count, "B").End(xlUp).Row
Range(.Cells(2, "A"), .Cells(lastRow, "A")).Delete shift:=xlToLeft
For i = lastRow To 2 Step -1
If WorksheetFunction.CountIf(.Range("A:A"), .Cells(i, "A")) > 1 Then
.Cells(i, "A").ClearContents
End If
Next i
End With
Application.ScreenUpdating = True
End Sub
こんな感じではどうでしょうか?m(_ _)m
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 【条件付き書式】countifsで複数条件を満たしたセルを赤くする方法 2 2023/02/09 23:53
- Visual Basic(VBA) 改行ごとに行を追加し、数量を分割 4 2023/07/11 16:39
- Excel(エクセル) SUMIFのIF分岐について 4 2023/04/15 12:57
- Visual Basic(VBA) VBAで最新のデータを別シートに転記する方法をお教えください。 3 2022/04/07 19:20
- Excel(エクセル) Excel関数 情報引用する方法 4 2022/07/31 20:59
- Visual Basic(VBA) 【VBA】指定した検索条件に一致したら別シートに転記したい 2 2022/03/23 16:14
- Excel(エクセル) 製品番号での整列と、検索に関して 3 2023/06/28 19:20
- Excel(エクセル) Excelにて、行の最後のセルの値をコピーして別sheetに張りつけるVBAコードをご教授願います 3 2022/11/20 14:35
- Visual Basic(VBA) 【VBA】複数行あるカンマ区切りのデータを全て縦に一列に並べたい 5 2022/04/13 17:03
- Excel(エクセル) excelで検索した商品の画像(ネットワーク上の)を表示させたい。 3 2023/06/28 00:32
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教えるわが家の防犯対策術!
ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!
-
VBAを使って検索したセルをコピーして別の場所に貼り付ける。
Visual Basic(VBA)
-
【VBA】特定の値が入った行をコピーして別シートに貼り付ける方法をおしえていただきたいです。
Excel(エクセル)
-
VBAで条件が一致する行をコピーしその1つ下へ挿入
Excel(エクセル)
-
-
4
EXCEL VBAで文字列の検索とコピー
Excel(エクセル)
-
5
特定の文字を条件に行挿入とそこからセルデータを追加するVBAについて
Visual Basic(VBA)
-
6
VBAで別ブックの列を検索し、該当があれば行ごと新規ブックにコピーしたい。
Excel(エクセル)
-
7
【VBA】特定列に文字が入っていたらそのセル行をコピーしてマスターブックの同じ行に貼り付けたい
その他(Microsoft Office)
-
8
エクセルVBAで、条件に一致するセルへ移動
Excel(エクセル)
-
9
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
10
Excel VBAで、検索後行の挿入をしたい。
Excel(エクセル)
-
11
vba 2つの条件が一致したらコピーして別シートに値のみ貼り付け
Visual Basic(VBA)
-
12
毎回変わる範囲を検索し、コピペするマクロについてご教示ください。
Excel(エクセル)
-
13
excel2010 マクロで複数シート検索し、一致した行をコピーしたい
Excel(エクセル)
-
14
VBAで検索して指定の位置に行を挿入したい
Visual Basic(VBA)
-
15
同じ作業を複数のシートに実行させるにはどうしたらいいのでしょうか
Visual Basic(VBA)
-
16
【VBA】特定の文字が入っている行の一部を抽出して別シートコピーするには
Visual Basic(VBA)
-
17
i=cells(Rows.Count, 1)とi=cells(Rows.Count, 2)の違い
Visual Basic(VBA)
-
18
EXCEL VBAで全選択範囲の解除
Excel(エクセル)
-
19
EXCELで変数をペーストしたい
その他(プログラミング・Web制作)
-
20
VBA EXCEL あるセルの中の一部の文字列だけをコピーするには?
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルの保護で、列の表示や...
-
文字の色も参照 VLOOKUP
-
ExcelのVlookup関数の制限について
-
エクセルの列の限界は255列以上...
-
VBAで繰り返しコピーしながら下...
-
スプレッドシートでindexとIMPO...
-
VLOOKアップ関数の結果の...
-
Excel の複数シートの列幅を同...
-
SUMPRODUCTにて別シートのデー...
-
エクセル マクロ 標準モジュー...
-
エクセルの複数シートにあるデ...
-
エクセルで、book全体の検索&...
-
オートフィルタ使用時にCOUNTIF...
-
【VBA】ピボットテーブルを既存...
-
【条件付き書式】countifsで複...
-
エクセル 日報売上を月報に展開...
-
【VBA】複数のシートの指定した...
-
EXCEL VBAのコンボボックスに取...
-
エクセルで横並びの複数データ...
-
Excel VBA ピボットテーブルに...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ExcelのVlookup関数の制限について
-
文字の色も参照 VLOOKUP
-
オートフィルタ使用時にCOUNTIF...
-
エクセルの保護で、列の表示や...
-
VBAで繰り返しコピーしながら下...
-
エクセル関数に詳しい方、教え...
-
【条件付き書式】countifsで複...
-
Excel の複数シートの列幅を同...
-
エクセル マクロ 標準モジュー...
-
エクセルで横並びの複数データ...
-
エクセルの列の限界は255列以上...
-
Excelでの並べ替えを全シートま...
-
VLOOKアップ関数の結果の...
-
SUMPRODUCTにて別シートのデー...
-
エクセルで、チェックボックス...
-
Excel VBA ピボットテーブルに...
-
【エクセル】1列のデータを交...
-
エクセルVBAで、ある文字を含ん...
-
エクセルのブック分割マクロを...
-
excel 複数のシートの同じ場所...
おすすめ情報