
vba初心者です。
ネットで「vba複数条件一致」で検索して色々なものを見て自分なりにやってはいるのですが、どうしても思い通りにいきません。
お助けいただけると嬉しいです。
sheet1にデータがあります。sheet1のA列とB列がsheet2の(B2とC2)と一致した場合のみ、その行のA列~D列をコピーしてsheet2に貼り付けを行います。sheet1の値は寸法・材料・日付の順に並んでおり、間に他の寸法が混ざることはありません。
貼付はsheet2のB列の6行目から行いたいです。行数は6行目から20行目までです。21行目以上になることはありません。
sheet2の表はフォントの大きさ等を予め調整しているので、貼り付けは値のみとしたいです。
添付画像の左側がsheet1で右側がsheet2です。
添付画像の場合、sheet2の「B6~E8」の部分がsheet1からコピーしたデータとなります。

No.1ベストアンサー
- 回答日時:
こんばんは!
関数でもできそうですが、VBAでの方法をご希望なのですよね。
一例です。
標準モジュールにしてください。
Sub Sample1()
Dim i As Long, lastRow As Long
Dim cnt As Long, wS As Worksheet
Set wS = Worksheets("Sheet2")
lastRow = wS.Cells(Rows.Count, "B").End(xlUp).Row
If lastRow > 3 Then
Range(wS.Cells(6, "B"), wS.Cells(lastRow, "E")).ClearContents
End If
cnt = 5
With Worksheets("Sheet1")
For i = 2 To .Cells(Rows.Count, "A").End(xlUp).Row
If .Cells(i, "A") = wS.Range("B2") And .Cells(i, "B") = wS.Range("C2") Then
cnt = cnt + 1
wS.Cells(cnt, "B").Resize(, 4).Value = .Cells(i, "A").Resize(, 4).Value
End If
Next i
End With
End Sub
こんな感じではどうでしょうか?m(_ _)m
早速のご回答ありがとうございます。
標準モジュールで試してみたら無事うまくいきました。
ネットで調べながら少しずつ勉強してはいるのですが、まだまだうまくいかないことの方が多いです。
毎週末ネットで検索しながら試行錯誤していてうまくいかなかったことが、こんなに早く解決して驚いています。
本当にありがとうございました。

No.2
- 回答日時:
Sub 抽出()
Dim ws1, ws2, Sunpo, Zairyo
Dim StartRow, EndRow, tmpRow
'sheet名を変えている場合は適宜変えてください
Set ws1 = Worksheets("Sheet1")
Set ws2 = Worksheets("Sheet2")
'シート2に指定されている抽出寸法と材料です
Sunpo = ws2.Cells(2, "B")
Zairyo = ws2.Cells(2, "C")
StartRow = 2
EndRow = ws1.Cells(Rows.Count, "A").End(xlUp).Row
tmpRow = 6
For i = StartRow To EndRow
If (ws1.Cells(i, "A") = Sunpo) And (ws1.Cells(i, "B") = Zairyo) Then
ws2.Cells(tmpRow, "B") = Sunpo
ws2.Cells(tmpRow, "C") = Zairyo
ws2.Cells(tmpRow, "D") = ws1.Cells(i, "C")
ws2.Cells(tmpRow, "E") = ws1.Cells(i, "D")
tmpRow = tmpRow + 1
End If
Next
End Sub
ご回答ありがとうございます。
標準モジュールで実行したらうまくいきました。
同じ結果を導くのに、いろいろなプログラムがあるなと感心させられます。
教えてgooの回答者さんは親切な方ばかりでとても感謝です。
本当にありがとうございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教えるわが家の防犯対策術!
ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!
-
【VBA】指定した検索条件に一致したら別シートに転記したい
Visual Basic(VBA)
-
VBA 条件が一致した場合のみコピーする
その他(ビジネス・キャリア)
-
複数条件が一致で別シートに転記【エクセルVBA】
Excel(エクセル)
-
-
4
【VBA】特定の値が入った行をコピーして別シートに貼り付ける方法をおしえていただきたいです。
Excel(エクセル)
-
5
VBAで条件が一致する行のデータを別シートに抽出
Excel(エクセル)
-
6
【VBA】2つのシートの値を比較して条件一致したら、同じ行の隣の値を別ブックへ転記したいです。 VB
Visual Basic(VBA)
-
7
ExcelVBAを使って、値がある場合は作業を繰り返し実行するプログラムを作成したい。
Visual Basic(VBA)
-
8
【VBA】特定の条件でセルをコピー
Visual Basic(VBA)
-
9
VBAで条件が一致する行をコピーしその1つ下へ挿入
Excel(エクセル)
-
10
VBAを使って検索したセルをコピーして別の場所に貼り付ける。
Visual Basic(VBA)
-
11
エクセルVBA 複数の条件を含む対象を抜き出す。
その他(Microsoft Office)
-
12
【EXCEL】【VBA】空欄は飛ばして処理する方法を教えて下さい。
Excel(エクセル)
-
13
ある条件を満たすセルに対応する行のセル内容をコピーして・・
Visual Basic(VBA)
-
14
VBA 列全体を別シートの列と比較し、同じ値がある行の、右端に値をコピーする方法について
Excel(エクセル)
-
15
エクセルVBAのIFを使ったコピペ
Excel(エクセル)
-
16
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
17
excel VBA 2つのシートの特定の列を比較して同じ値のセルがあったらその行を上書きしたい
Excel(エクセル)
-
18
エクセル 同じ値を探して隣の数値をコピーする
Excel(エクセル)
-
19
VBA 値と一致した行の一部の列のデータを転記について教えてください
Visual Basic(VBA)
-
20
別シートの最終行に貼り付けするマクロを教えてください。 シートYのE3からE15までをコピー シート
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
人気Q&Aランキング
-
4
VBAを使って検索したセルをコピ...
-
5
Cellsのかっこの中はどっちが行...
-
6
VBAで、特定の文字より後を削除...
-
7
マクロについて。S列の途中から...
-
8
VBAのFind関数で結合セルを検索...
-
9
エクセルVBA、特定条件で行を追加
-
10
難問 VBA 今日の日付より前に対...
-
11
オートフィルタをマクロで作成...
-
12
重複データの合算(VBA)
-
13
グリッドの列の最大値を求めたい。
-
14
マクロ 最終列をコピーして最終...
-
15
VBAの構文 3列置きにコピーし...
-
16
rowsとcolsの意味
-
17
データグリッドビューの一番最...
-
18
Changeイベントでの複数セルの...
-
19
別シートのデータを参照して値...
-
20
vbaでシートより100より大きい...
おすすめ情報
公式facebook
公式twitter