
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も見ています
-
【VBA】2つのシートの値を比較して条件一致したら、同じ行の隣の値を別ブックへ転記したいです。 VB
Visual Basic(VBA)
-
【VBA】特定の値が入った行をコピーして別シートに貼り付ける方法をおしえていただきたいです。
Excel(エクセル)
-
excel VBA 2つのシートの特定の列を比較して同じ値のセルがあったらその行を上書きしたい
Excel(エクセル)
-
-
4
【VBA】元のシート内の文字列を別シートと比較し、一致したら元のシートの別のセルへ転記する方法。
Excel(エクセル)
-
5
VBA 条件が一致した場合のみコピーする
その他(ビジネス・キャリア)
-
6
エクセルのマクロで条件一致のデータを別シート(複数)に転記したい
Visual Basic(VBA)
-
7
VBA 別ブックから条件に合うものを転記したいです
Visual Basic(VBA)
-
8
複数の条件に合う行番号を取得するには
その他(Microsoft Office)
-
9
ある条件を満たすセルに対応する行のセル内容をコピーして・・
Visual Basic(VBA)
-
10
VBA 列全体を別シートの列と比較し、同じ値がある行の、右端に値をコピーする方法について
Excel(エクセル)
-
11
【VBA】指定した検索条件に一致したら別シートに転記したい
Visual Basic(VBA)
-
12
VBAで条件が一致する行をコピーしその1つ下へ挿入
Excel(エクセル)
-
13
VBAを使って検索したセルをコピーして別の場所に貼り付ける。
Visual Basic(VBA)
-
14
エクセルVBAで、条件に一致するセルへ移動
Excel(エクセル)
-
15
VBA 値と一致した行の一部の列のデータを転記について教えてください
Visual Basic(VBA)
-
16
B列の最終行までA列をオートフィル
Visual Basic(VBA)
-
17
シート間で同じ値があったらコピペ
Visual Basic(VBA)
-
18
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
19
複数条件が一致で別シートに転記【エクセルVBA】
Excel(エクセル)
-
20
エクセルVBA Ifでシート名が合致したら別ファイルから転記する場合のElse IfとForの書き方
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelで、あるセルの値に応じて...
-
B列の最終行までA列をオート...
-
vba 2つの条件が一致したら...
-
IIF関数の使い方
-
Cellsのかっこの中はどっちが行...
-
Changeイベントでの複数セルの...
-
【VBA】2つのシートの値を比較...
-
VBAコンボボックスで選択した値...
-
rowsとcolsの意味
-
DataGridViewにリンク列の追加...
-
Worksheets メソッドは失敗しま...
-
VBAで、離れた複数の列に対して...
-
C# 列の挿入
-
VBAでのリスト不一致抽出について
-
二つのリストを比べて部分一致...
-
【VBA】複数行あるカンマ区切り...
-
データグリッドビューの一番最...
-
URLのリンク切れをマクロを使っ...
-
DataGridViewに空白がある場合...
-
【Excel VBA】カンマと改行コー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelで、あるセルの値に応じて...
-
Worksheets メソッドは失敗しま...
-
vba 2つの条件が一致したら...
-
B列の最終行までA列をオート...
-
IIF関数の使い方
-
Cellsのかっこの中はどっちが行...
-
【VBA】2つのシートの値を比較...
-
VBAのFind関数で結合セルを検索...
-
URLのリンク切れをマクロを使っ...
-
文字列の結合を空白行まで実行
-
VBA 何かしら文字が入っていたら
-
VBAを使って検索したセルをコピ...
-
【Excel VBA】 B列に特定の文字...
-
VBAで指定範囲内の空白セルを左...
-
Changeイベントでの複数セルの...
-
VBAで、離れた複数の列に対して...
-
VBAでのリスト不一致抽出について
-
データグリッドビューの一番最...
-
rowsとcolsの意味
-
DataGridViewに空白がある場合...
おすすめ情報