- 締切済み
エクセルで2つのファイルを比較し、編集上書きするマクロを教えて下さい。
エクセルで2つのファイルを比較し、編集上書きするマクロを教えて下さい。 マクロ・VBAを最近勉強し始めたものです。 まずデータの元となる、詳細データ(1)ファイルがあります。 毎日、CSV形式で新しいデータを取り込み、 取り込んだファイルは詳細は抜けているので、 詳細内容を調べて打ち込み、(1)にどんどん保存していっています。 CSVファイルで、特定のデータ(2)を取り込んだとき、 以前、詳細内容は調べて、(1)に入れているので (1)から取り出して、(2)に記入するようにしたいです。 図で書くと 「ファイル(1)」 品番 価格 割引 担当 レジ 111 2000 500 小杉 山田 112 2500 600 三木 田中 113 3000 700 小杉 田中 「ファイル(2)」 品番 価格 割引 担当 レジ 111 2000 113 3000 のように、詳細内容がありませんので エクセルのA行に記入されている品番で比較して、 B行以降はすべて上書きという作業をしたいです。 (1)と(2)は別ファイルですが、 別ファイルでの操作が難しければ、 同じファイル内の別シートに入れます。 この操作をする時のマクロを教えて下さい。 行き詰まって分からないのでお力を貸して下さい。 文章力がなく申し訳ありませんが、よろしくお願い致します。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- 某HN クロメート(Chromate)(@CoalTar)
- ベストアンサー率40% (705/1742)
マクロの自動記録から修正してません。添付図参照 Sub Macro1() Range("G1").Select 'G1セル選択 Selection.CurrentRegion.Select '[Ctrl]+[Shift]+[*] Selection.SpecialCells(xlCellTypeBlanks).Select '[Ctrl]+[G]ジャンプ ●空白セル Selection.FormulaR1C1 = "=INDEX(C[-6],MATCH(RC7,C1,0))" '数式を入力して[Ctrl]+[Enter] End Sub H2:K3セル(H2セルアクティブ)に入力した数式は =INDEX(B:B,MATCH($G2,$A:$A,0)) [Ctrl]押しつつ[Enter] あとは応用です。 >A行に記入されている A列、B列と呼びます >B行以降はすべて上書きという作業をしたいです B列は入力されているようなら、上記マクロではあわない可能性があります。
- web2525
- ベストアンサー率42% (1219/2850)
まず最初に 個々の回答者はご質問者がマクロの何が分っていて何が分らないかが分りません マクロを組む時の考え方のみの解説が必要なのか 全体のコードを回答としてほしいのか、一部のみで良いのか コードの詳細な説明も必要なのか マクロを使う必要もない状態、関数式のみで解決する場合でもマクロの回答が必要なのか 状況が見えません 行き詰ってわからないと言われても何で詰まっているかを明確にしないと丸投げ扱いと見なされます 前置きはこの辺で、回答ですが 質問の条件だけであればVLOOKUP関数の利用で解決します どうしてもマクロ化したいのであれば ・B列以降にVLOOKUP関数での表示計算式を入力 ・シート全体をコピーして値のみの貼り付け 上記動作をマクロの記録で記録すればマクロ化できます
補足
申し訳ありません。 コードを教えて頂きたく質問しました。 VLOOKUP関数だと、 エクセルのB行C行D行E行~とコピーしたい行が沢山あるけれども、 行ごとに1回1回関数を入力しないといけないと聞きましたので、 コードで、一度にできるのであれば、コードが良いと思った次第です。 もしよろしければ 関数だと、どういった関数式になるのか教えて頂けないでしょうか。 まだ、初歩的な事しか分かっていないのですが、 どうしても急ぎで必要で、 教えて教えてになってしまい本当に申し訳ありません…。