• 締切済み

エクセルVBAでの一括データ変更

業務で顧客情報の簡易ツールをエクセルVBAで作成しています。 どなたか、いい案がある方、お教えください。 前提:2つのエクセルファイルを作成しています。 ファイルAは、顧客名、顧客担当者名、商品名、商品番号、契約期間などの一連のデータを持っており、DBファイルとして作成。 ファイルBは、検索・登録を行うユーザインターフェース。ユーザフォームにて各種作業をマクロ登録しています。 やりたい事:ファイルBのユーザフォームで、なにかしらのデータを検索し、その検索がヒットしたデータの内で、一括で変更したい項目の内容が全て同じならば一括でデータを変更、1つでも違ったら変更せずに終了。検索する内容は、時には顧客名であったり顧客担当者であったりと可変です。また、変更したい項目も同様に可変です。 私の今の所の案: (1)ファイルBにユーザーフォームで検索ツールでキーになる項目をファイルA上でオートフィルタで検索 (2)(1)の可視結果を新しいシートにコピー (3)(2)のシートで変更したい項目をキーにアドバンスドフィルタ (4)データが全て同じなら、再度(2)を行い、変更したい項目を一括で置換 作業が複雑でこのやり方でVBAが組めるかわかりません。 どなたか、アドバイスのある方教えてください。

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.1

質問がわかりにくいと思う。質問が一般論に見えるせいもある。 変更についての考えを整理したら。 1対多のような観点から。 (1)顧客名ー社名変更ー数社繰り返しするか。数回に分けて繰り返すか。 (2)担当者ー(この意味不明だが推定で)異動による担当代え、単なる担当テリトリ変えか (3)商品名・商品番号ー???どういうケース商品目名変更などありうるのか。 担当者の扱い商品名のこと? (4)契約期間ーこれをID識別するのはなに?契約期間とは? (5)上記以外の諸項目ーどんなものがあるか。 そして、これらのどれかを1つ選ばせて(複数にするのはややこしくなるだけとおもう) 1操作ー1項目変更をお勧め。 A.変更前ー変更後の情報で済むもの(1)など (2)の転勤の一括担当引継ぎなど。一律でない場合はどうする? B。対象限定ー変更前ー変更後 (2)のゴチャゴチャ担当変え (4)もこれか すなわち、レコード更新と変更がゴッチャに意識されてる。 ーーー その後、エクセルのフィルタでやるというよりは、 検索(Find)ー>該当分を捉えるー>情報変更(置換Replace) と考えるべきでしょう。 ーー そのとき、 X.全レコード総なめ方法 Y。ランダムアクセス的な方法 の区別があり、Xが易しく能率悪いようだが、変更が多(比率)量のレコードに及ぶ場合は、Yと差が少なくなり簡単なだけ得になる。 == 上記に書いたものは、アクセス、オラクルなどを業務で使うときの検討事項と同じのように思う。 すなわちエクセルでは、荷が重いことをやろうとしているようだ。 == >その検索がヒットしたデータの内で、一括で変更したい項目の内容が全て同じならば一括でデータを変更、1つでも違ったら変更せずに終了 具体的に、何のことか判らない。 ーー U.定期的な更新と(契約が増えた、終了したとか) V.毎月あるが、非定例的なテーブル変更(社名変更) W.恒例化していても、担当変えなど (本当はテーブルを分けないといけないのだが、エクセルは、ゴッチャにならざるを得ないことが多いが) を分けて考えるべきです。ゴッチャに考えられてませんか。

immhiro
質問者

補足

imogasiさんへ 質問がわかりづらくてスミマセン。r(≧ω≦*) 改めて、説明させて下さい。 ファイルAのDBには、顧客名、顧客担当者名、社内担当者名、契約番号、商品名、商品番号、契約日、契約満了日などの情報があります。 複数の商品を同時に契約している場合もあり、同じ契約番号で複数の商品名が登録されている場合もあります。 やりたいことは、変更が発生した場合の手間の削減です。1データずつの更新はすでにVBAで完成していますので、複数データを同時に変更する機能を設けたいと思い考えています。 作業としては、まず、契約番号をキーに検索し、その契約番号にヒットしたデータのある情報(例えば、社名変更時の社名や担当者変更時の担当者など)を一括で変更したいんです。ただし、場合によっては変更したい元情報が異なっている場合があるので、その場合には一括変更させず、元情報が完全に同一の場合にのみ一括変更したいです。 検索するキーは、契約番号がいいです。その契約番号内のどういった情報を変更するのかは毎回異なります。時には、顧客名であり商品名であったりします。また、作業は複数項目を変更するのではなく、複数データの同じ値をある値に変えると言う作業であり、変更する項目は1つずつ出来ればいいです。

関連するQ&A

専門家に質問してみよう