- 締切済み
エクセルでのマッチング
色々エクセルでのマッチングのページを見ましたが自分の状況に該当するのがなかったので質問させて頂きます。 エクセルでのデータが2つあります。 Sheet1 A列→注文NO B列→金額 C列→製造番号 D列→金額 E列→商品名 Sheet2 A列→注文NO B列→金額 C列→品名 D列→数量 E列→単価 の2つのシートがあります。2つのシートを比較して、 A列の注文NOが一致してたら、Sheet1,Sheet2のG列に”注文NOが一致してます”と記載します。 さらに注文NOも一致し、同じ行の金額も一致したら、”金額も一致してます”とH列に記載します。 できましたら、 注文NOと金額が一致した物に関してSheet2のF列にSheet1の製造番号を記載するようなプログラムを作りたいと思います。 ↓に私が調べた結果、注文NOだけをキーにしてマッチングさせて、動くプログラムがありますしたが、2つをキーにする場合や別シートから一致したデータの一部を持ってくるものは探してもわかりませんでした。 http://www.okweb.ne.jp/kotaeru.php3?q=507722 質問された方と違い、データは人が入れていることもあり、間違いがある可能性があり2つ以上をキーにして、どこの製造番号の物かわかるようなプログラムをできる方教えて頂けませんでしょうか? ちょっと複雑ですのでここに出すべきか迷いましたが、プログラムの組める方、お願い致します。
- みんなの回答 (2)
- 専門家の回答
お礼
同じ注文番号に同じ製造番号の物はあったり、空白行も存在してしまいます。(それを見つけ出すのが苦労するのでプログラムを考えました。) 一度試させて頂きましたが、eipu様にかいて頂いた通り、条件にひっかかりエラーになってしまいます。というより、プログラムが終了しません・・・。 自分でプログラムを組んでみましたが、自信がありません。 注文Noが一致した時。一致しますと出て、その時、製造番号も一緒にでます。さらにチェックとして注文Noと金額が一致した時金額も一致しましたと出るような形にしたつもりです。一応思った通り出るのですが、ホントにこれで正しいのか不安です。(マクロを組むのは初めてで、さらに本すら持ってませんから・・・) Option Explicit Sub ダイフク支払通知書() Dim 最終行1, 最終行2 As Integer Dim 行1, 行2 As Integer 最終行1 = Worksheets(1).Range("A400").End(xlUp).Row 最終行2 = Worksheets(2).Range("A400").End(xlUp).Row Worksheets(1).Activate 'マクロ実行画面を表示しない Application.ScreenUpdating = False For 行2 = 2 To 最終行2 For 行1 = 2 To 最終行1 '注文NOが一致してた時製番を表示させるプログラム If Worksheets(2).Range("A" & 行2) = Range("A" & 行1) Then Range("K" & 行1) = Worksheets(2).Range("C" & 行2) End If Next 行1 Next 行2 '注文NOが一致してた時表示するプログラム Application.ScreenUpdating = False For 行2 = 2 To 最終行2 For 行1 = 2 To 最終行1 If Worksheets(2).Range("A" & 行2) = Range("A" & 行1) Then Range("J" & 行1) = "注文NOは一致してます" 行1 = 最終行1 End If Next 行1 Next 行2 '注文NOが一致しかつ金額が一致した時表示させるプログラム Application.ScreenUpdating = False For 行2 = 2 To 最終行2 For 行1 = 2 To 最終行1 If Worksheets(2).Range("A" & 行2) = Range("A" & 行1) And Worksheets(2).Range("B" & 行2) = Range("B" & 行1) Then Range("I" & 行1) = "金額も一致してます" 行1 = 最終行1 End If Next 行1 Next 行2 End Sub