- 締切済み
EXCEL VBA 一致しないデータの抽出及びデータ更新
マスタシートには、各店舗の累積データが入っており、日々データが追加されております。 毎日の作業として、 1.マスタシートを、各店舗別シートにコピーをする。(シート名は店舗コード)*マクロで自動化済 2.各店舗別シートの、特記事項を修正。*手作業 3.修正した行を、マスタシートの対象行に上書き。*手作業 4.修正した行のみ、修正データシートへ貼り付け。*手作業 3と4の手作業を自動化しようと、データの通番(A列)と、特記事項(P列)をキーにして、 Dictionaryを使い、一致しないデータを抽出しようとやってみましたが、 うまくいかず悩んでおります。 データには、通番・店舗コード・店舗名・特記事項などがあります。 何か良い方法があったら、教えて下さい。宜しくお願いします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- imogasi
- ベストアンサー率27% (4737/17070)
回答No.1
補足
解りづらい質問の仕方をしてしまい、大変に申し訳ありませんでした。 また様々な指摘有難うございます。 詳しく説明させて頂きます。(更にわかりづらくなってしまったらスミマセン) 1.シートは[マスタ]シート、[店舗別]シート、[修正データ]シートの3種類があります。但し、[店舗別]シートというのは店舗数分存在します。 店舗は日々増加している為、[店舗別]シートの数は日々変わります。シート名は、店舗コード(数字6桁)を使用しています。 2.[マスタ]シートの項目は、通番・店舗コード・店舗名・TEL・PCNO・処理結果・特記事項などがあります。 日々実施されている、各店舗のパソコンへのアップデートの処理結果の累積表になっているため、1店舗情報は数行(日数分)存在します。 3.特記事項には、店舗への確認情報を記入しております。 4.店舗数が数十件あるため、[マスタ]シートから、店舗コードごとに抽出をして、店舗コードごとにシートを作り、内容を修正しています。 この後、修正した行のみを、通番(A列)と特記事項(P列)をキーにして、[マスタ]シートの同じ通番に上書きすると共に、[修正データ]シートに修正した行をコピーしたいと思っております。 同じシート内で、A,B列とC,D列を比較し、一致しないデータを抽出し、E,F列に表示するという以下の方法を、ネットでみつけました。 これを応用し、[マスタ]シートのA列(通番)とP列(特記事項)をキーにして、各店舗別シートを1つのシートに纏め、A列(通番)とP列(特記事項)を比較し、一致しないデータの抽出をしようと試みましたが、うまくいかず何か他に良い方法はないかと思い、質問させてもらいました。 説明が長くなってしまい、申し訳ありません。 何か良い方法がありましたら、ご教授願います。 --------------------------------------------------------- Dim v,w,ky,i&,ss$ Dim dic As Object v=Range("A2",Range("A1").End(xlDown)).Resize(,2).Value w=Range("C2",Range("C1").End(xlDown)).Resize(,2).Value Set dic=CreateObject("Scripting.Dictionary") For i=1 To UBound(v) ss=v(i,1) & "|" & v(i,2) dic(ss)=Empty Next For i=1 To Ubound(w) ss=w(i,1) & "|" & w(i,2) If dic.Exists(ss) Then dic.Remove ss End If Next ReDim v(1 To dic.Count,1 To 2) i=0 For Each ky In dic.Keys i=i+1 w=Split(ky,"|") v(i,1)=w(0) v(i,1)=w(1) Next Range("E2").Resize(dic.Count,2).Value=v Set dic=Nothing ---------------------------------------------------------