
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も見ています
-
ネット速度にお困りなら…Wi-Fi 6
高速・安定のWiFi 6で、通信速度の不満を解消!接続機器が多くても安心。だから今買うならWi-Fi 6がおすすめ
-
VBAで条件が一致する行のデータを別シートに抽出
Excel(エクセル)
-
複数条件が一致で別シートに転記【エクセルVBA】
Excel(エクセル)
-
【VBA】特定の条件でセルをコピー
Visual Basic(VBA)
-
4
Exel VBA 別ブックから該当データを検索し、必要なデータを取得する方法について
Visual Basic(VBA)
-
5
エクセルVBA 複数の条件を含む対象を抜き出す。
その他(Microsoft Office)
-
6
別のシートから値を取得するとき
Visual Basic(VBA)
-
7
EXCEL VBA データを抽出して別シートへ貼り付ける方法
Excel(エクセル)
-
8
エクセル 同じ値を探して隣の数値をコピーする
Excel(エクセル)
-
9
[初心者です]VBAで指定列からAを検索し、発見したら隣のセルに値0を入れるマクロ。
Access(アクセス)
-
10
【VBA】 別シートを検索し、一致した値より指定した数だけ移動したセルから下全てをコピペ
Excel(エクセル)
-
11
VBA 値と一致した行の一部の列のデータを転記について教えてください
Visual Basic(VBA)
-
12
指定した文字があった場合、その行を削除するマクロが欲しいです
Excel(エクセル)
-
13
VBAを使って検索したセルをコピーして別の場所に貼り付ける。
Visual Basic(VBA)
-
14
VBA 別シートの同じ日付の欄に値を貼付け
Excel(エクセル)
-
15
VBA 条件が一致した場合のみコピーする
その他(ビジネス・キャリア)
-
16
複数の条件に合う行番号を取得するには
その他(Microsoft Office)
-
17
VBAで一覧表から特定の条件の行を抽出する
Excel(エクセル)
-
18
ExcelVBAを使って、値がある場合は作業を繰り返し実行するプログラムを作成したい。
Visual Basic(VBA)
-
19
【VBA】指定したセルと同じ値で、別シートにあるセルに移動するには?
Visual Basic(VBA)
-
20
エクセル VBA find は別シートを検索できますでしょうか?
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
人気Q&Aランキング
-
4
Excel VBA で条件を満たしたセ...
-
5
エクセル 2つの表の並べ替え
-
6
エクセルで行を挿入し、小計、...
-
7
【エクセル】最終行までコピー...
-
8
エクセルVBA、特定条件で行を追加
-
9
VBA グラフX軸の変更
-
10
IIF関数の使い方
-
11
マクロ 最終列をコピーして最終...
-
12
期限を超えた日付に警告のメッ...
-
13
VBAの構文 3列置きにコピーし...
-
14
GridViewの行の入れ替えについて
-
15
ファイルをフォルダに自動振り...
-
16
データグリッドビューの一番最...
-
17
VBAで指定範囲内の空白セルを左...
-
18
C# dataGridViewの値だけクリア
-
19
VBAを使って検索したセルをコピ...
-
20
vbaでシートより100より大きい...
おすすめ情報