
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も見ています
-
VBAを使って検索したセルをコピーして別の場所に貼り付ける。
Visual Basic(VBA)
-
VBAで条件が一致する行をコピーしその1つ下へ挿入
Excel(エクセル)
-
【VBA】特定の値が入った行をコピーして別シートに貼り付ける方法をおしえていただきたいです。
Excel(エクセル)
-
-
4
【VBA】特定列に文字が入っていたらそのセル行をコピーしてマスターブックの同じ行に貼り付けたい
その他(Microsoft Office)
-
5
VBAで検索して指定の位置に行を挿入したい
Visual Basic(VBA)
-
6
EXCEL VBA セルに既に入力されている文字に文字を追加する
Excel(エクセル)
-
7
vba 2つの条件が一致したらコピーして別シートに値のみ貼り付け
Visual Basic(VBA)
-
8
【VBA】2つのシートの値を比較して条件一致したら、同じ行の隣の値を別ブックへ転記したいです。 VB
Visual Basic(VBA)
-
9
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
10
ExcelのVBAで連番を振る。
Excel(エクセル)
-
11
[初心者です]VBAで指定列からAを検索し、発見したら隣のセルに値0を入れるマクロ。
Access(アクセス)
-
12
メッセージボックスのOKボタンをVBAでクリックさせたい
Visual Basic(VBA)
-
13
別ブックをダイアログボックスで指定してそこにあるシートをコピーしたい
Excel(エクセル)
-
14
excel VBA 2つのシートの特定の列を比較して同じ値のセルがあったらその行を上書きしたい
Excel(エクセル)
-
15
Excelマクロ 該当する値の行番号取得などのやり方について
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【マクロ】【配列】3つのシー...
-
【条件付き書式】countifsで複...
-
Excelのセルの色を変えた行(す...
-
エクセルで、チェックボックス...
-
ExcelのVlookup関数の制限について
-
文字の色も参照 VLOOKUP
-
Excel の複数シートの列幅を同...
-
エクセルの保護で、列の表示や...
-
シートをまたぐ条件付き書式に...
-
【VBA】複数のシートの指定した...
-
SUMPRODUCTにて別シートのデー...
-
Excelでの並べ替えを全シートま...
-
エクセル マクロ 標準モジュー...
-
エクセルの関数の使い方(ルッ...
-
【エクセル】1列のデータを交...
-
VBAで繰り返しコピーしながら下...
-
Excel 2段組み
-
EXCEL VBAのコンボボックスに取...
-
VLOOKアップ関数の結果の...
-
エクセル2013 複数シート間での...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【マクロ】【配列】3つのシー...
-
文字の色も参照 VLOOKUP
-
【条件付き書式】countifsで複...
-
ExcelのVlookup関数の制限について
-
エクセルの保護で、列の表示や...
-
Excelのセルの色を変えた行(す...
-
エクセルで、チェックボックス...
-
VBAで繰り返しコピーしながら下...
-
シートをまたぐ条件付き書式に...
-
Excelでの並べ替えを全シートま...
-
Excel の複数シートの列幅を同...
-
エクセルの列の限界は255列以上...
-
SUMPRODUCTにて別シートのデー...
-
VLOOKアップ関数の結果の...
-
excel 複数のシートの同じ場所...
-
【VBA】複数のシートの指定した...
-
Excelに自動で行の増減をしたい...
-
エクセル マクロ 標準モジュー...
-
Excel 2段組み
-
スプレッドシートでindexとIMPO...
おすすめ情報