- ベストアンサー
ExcelVBAでデータ不一致のものの抽出
単純なものにしたいので教えてください。 Sheet1「元データ」 A B C D コード 商品 店名 納入日 1 0001 みかん A店 3/1 5 0360 メロン D店 6 かき P店 7 0312 キウイ D店 9 0333 くり C店 Sheet2「最新データ」 A B C D コード 商品 店名 納入日 1 0001 みかん A店 3/1 4 0311 いちご B店 3/10 6 0250 8 0312 キウイ とあった時に元データのA列の番号と最新データの番号を見て同じ物があったら、元データに最新データの内容をうつし込み、一致しなかったらチェックデータへうつしこむというデータがあります。 Dim Sh1 As Worksheet Dim Sh2 As Worksheet Dim Sh3 As Worksheet Dim myR As Range Dim N_D As Long Dim i As Long Set Sh1 = Worksheets("元データ") Set Sh2 = Worksheets("チェックデータ") Set Sh3 = Worksheets("最新データ") With Sh1 For i = 5 To .Range("A65536").End(xlUp).Row N_D = .Range("E" & i).Value Set myR = Sh3.Range("A:A").Find(What:=N_D, LookIn:=xlValues, _ MatchCase:=False) If Not myR Is Nothing Then myR.Offset(, 2).Resize(, 3).Copy _ Destination:=.Range("B" & i & ":D" & i) Else addR_No = Sh2.Range("A65536").End(xlUp).Row + 1 .Range("A" & i & ":D" & i).Copy _ Destination:=Sh2.Range("A" & addR_No & ":D" & addR_No) End If Next End With ここで、データが一致した場合は無視して、一致しなかったときだけチェックデータに内容を書き込むとする場合はどのように修正すればよいのでしょうか?あと、チェックデータのあたまに コード 商品 店名 納入日 という言葉を入れたいのですが、どのように書き込むのでしょうか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
その他の回答 (1)
- imogasi
- ベストアンサー率27% (4737/17070)
お礼
なるほど!Notをとることで普通にIf文になるからすすめれるわけですね。 通常元データを中心にして考えるんでしょうが、今回は毎月最新データを中心にして考えて元データを作るというにしてます。 実際のデータは大量にあるので、大分進んできて楽しくなってきました。また細かい所で質問させていただきますのでよろしくお願いします。