- ベストアンサー
エクセル2007 VBAでシート1の項目をシート2に検索&コピーする方法について
- エクセル2007 VBAを使用して、シート1に入力されている項目をシート2で検索し、新規シートにコピーする方法について説明します。
- 検索は取引先名の一部と品目Cの完全一致で行います。
- また、シート1の数量をシート2のデータから計算し、シート1の数量に満たすまでコピーします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
やりたい処理のうちどの部分が分からないのでしょうか。 (1)一致したときの新規シートへのコピー方法 (2)数量オーバーの処理 (3)数量未満の処理 (4)何もかも分からない 上記(4)だとちょっと、、、、、ですが、 回答をヒントに勉強するということであればそれもありかと。 で、上記(4)だということでサンプル。 但し、必ず理解すること! ▲Sheet1の未使用のD列に、転記分の合計 同じくE列に、”未満”のコメント表示 '---------------------------------------------- Sub Test() Dim Sht1 As Worksheet Dim Sht2 As Worksheet Dim NewSht As Worksheet Dim R1 As Long Dim R2 As Long Dim Kei As Double Set Sht1 = Worksheets("Sheet1") Set Sht2 = Worksheets("Sheet2") Set NewSht = Worksheets.Add(after:=Worksheets(Worksheets.Count)) Sht2.Range("A1:E1").Copy NewSht.Range("A1") For R1 = 2 To Sht1.Cells(Rows.Count, "A").End(xlUp).Row Kei = 0 For R2 = 2 To Sht2.Cells(Rows.Count, "A").End(xlUp).Row If Kei < Sht1.Cells(R1, "C") And _ InStr(Sht2.Cells(R2, "B"), Sht1.Cells(R1, "A")) > 0 And _ Sht1.Cells(R1, "B") = Sht2.Cells(R2, "D") Then Sht2.Cells(R2, "A").Resize(1, 5).Copy _ NewSht.Cells(Rows.Count, "A").End(xlUp).Offset(1) Kei = Kei + Sht2.Cells(R2, "E") End If Next R2 Sht1.Cells(R1, "D") = Kei Sht1.Cells(R1, "E") = "" If Kei < Sht1.Cells(R1, "C") Then Sht1.Cells(R1, "E") = "未満" End If Next R1 End Sub '----------------------------------------- 以上です。
その他の回答 (1)
- minaraiexcel
- ベストアンサー率0% (0/3)
少し最後の質問について理解できていませんので 一応、上の質問だけを作成してみました。 新規シート ⇒ シート3へコピーしています。 そこは、新規作成として変更して頂ければいいかと。 Sub test() Dim Key1 As String, Key2 As String Dim i As Integer i = 1 '貼り付け先の行 With Worksheets(2) For x = 2 To 30 'シート1の品目C For Each v In .Range("D2:D30") 'シート2の品目C Key1 = Cells(x, 1).Value '取引先名 Key2 = Cells(x, 2).Value '品目C If v.Value Like Key2 Then If InStr(.Cells(v.Row, 2), Key1) > 0 Then v.EntireRow.Copy Worksheets(3).Cells(i, 1) i = i + 1 End If End If Next v Next x End With End Sub
お礼
返信遅くなりすみません。サンプルありがとうございました。 ベストアンサーについては、もう一人の方に質問の全ての処理が出来るサンプルを作成していただけましたので、そちらの方を選ばせていただきました。 ありがとうございました。
お礼
返信遅くなりすみません。 サンプルありがとうございました。とても勉強になりました。 こちらを参考にして、処理を追加して使わせていただきました。 ありがとうございました。