- ベストアンサー
2つの表の異なる行をマクロで抽出し、挿入する
月の10日に商品納入明細を使ってトレース表を作成し、20日に更新された納入明細で新規納入先の行を確認して10日に作成したトレース表に挿入して更新しています。マクロを使って10日の納入明細に20日の納入明細の異なる行のみ抽出して挿入することは出来ないでしょうか?現在は2つの表を見比べて異なる行を挿入していますが非常に時間と労力が掛かります。宜しくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
どのセルを比較しているのか不明ですが たとえば、シート1のA列とシート2のA列を比較して 異なる行をシート2からシート1に追加します。 Sub test() Dim mRange As Range, sRange As Range Dim firstAddress As String Dim AddFlg As Boolean With Worksheets(2) For Each sRange In .Range("A1:A" & .Range("A" & Rows.Count).End(xlUp).Row) AddFlg = True With Worksheets(1).Range("A1:A" & Worksheets(1).Range("A" & Rows.Count).End(xlUp).Row) Set mRange = .Find(sRange.Value, LookIn:=xlValues) If Not mRange Is Nothing Then firstAddress = mRange.Address Do AddFlg = False Set mRange = .FindNext(mRange) If mRange Is Nothing Then Exit Do Loop Until mRange.Address = firstAddress End If End With If AddFlg = True Then .Rows(sRange.Row).Copy Worksheets(1).Rows(Worksheets(1).Range("A" & Rows.Count).End(xlUp).Row + 1).PasteSpecial End If Next End With End Sub
その他の回答 (2)
- cistronezk
- ベストアンサー率38% (120/309)
>現在は2つの表を見比べて異なる行を挿入していますが非常に時間と労力が掛かります。 マクロで苦労されるのもよい勉強となりますが、作業列を作れば簡単に差分が分かります。 たとえば複数列(A、B列)で2表の違いを判断しているとします。 (1)10日納品明細表シートに作業列(例、K列)を用意し、そこに「=A1&B1」を全行にフィルします。 (2)20日納品明細表シートに作業列(例、K列)を用意し、そこに「=COUNTIF(10日納品明細表シート!K:K,A1&B1)」を全行にフィルします。 (3)20日納品明細表シートのA-K列を選択して「データ」-「オートフィルタ」をかけます。 (4)K列が0のものを抽出して10日納品明細表シートにコピペします。 以上です。
お礼
ありがとうございました。 実施してみます。今まで手動で非常に時間が掛かっていました。
- imogasi
- ベストアンサー率27% (4737/17069)
>出来ないでしょうか 出来るとおもう。しかし質問が丸投げで、コードを書いてださい的な 内容ではないか。このコーナーの規約違反のはず。 それに(簡潔なポイントを押さえた)模擬実例も挙げないで、コードなどかけない。 (1)Find法+挿入 #1のようなやり方 (2)両シートをソートー(マッチングして)マージ法。第3のシートに結果を出すから、挿入処理は要らない。 (3)総なめ法+挿入 私なら(2)でやる。 まあVBAも中級以上のプログラム的(レコード処理のロジックを考える必要がある)課題なので質問者には無理だろう。
お礼
すいません。 初心者でうまく困っている内容を記載できませんでした。 すいません。
お礼
ありがとうございました。 マクロ実施してみます。