- ベストアンサー
Excel2003データマッチング方法
- Excel2003でのデータマッチング方法について教えていただきたいです。具体的には、『見込み客と現在の契約者』のリストをマッチングし、契約済みのデータを抽出する方法を知りたいです。
- また、毎日のマッチング作業を効率的に行うためには、VLOOKUP関数を使用するのではなくマクロでシステム化した方が良いと聞きました。マクロの設定方法も教えていただけると助かります。
- お願いしたい内容は、Excel2003を使用して『見込み客と現在の契約者』のリストをマッチングし、契約済みのデータを抽出する方法です。また、マッチング作業を効率化するためにはマクロを使用する方法も知りたいです。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
まず、Excelには「セルA」というセルはありません。列Aの間違いでしょうか。 また、見込み客リストも現在の契約者リストも項目がいくつかありますが、どの項目で区別できるのかの指定がありません。IDもないですし、リスト内に重複があるのかないのかも説明がありません。 社名だけできちんと区別できるのでしょうか。 マクロでということですが、もっと質問を具体的な例でやらないと、VBAにできない。 また、これでVBAで回答しても、 「難解で自分では設定できない」 ということなら、実態に合わせて設定することもできないですよね。 VBAじゃなくても、関数で対応できますが、やってみますか。 これも、このままではダメで、実際の作業内容に合わせなければなりませんが。 添付の例です。上段左が、Sheet1、右がSheet2、下段が、Sheet3です。 Sheet3のA3に下記関数を入れて、これは配列数式なので、数式バーにカーソルを置いて、Ctrl+Shift+Enterを押します。 すると、下記のように、数式の両端が{ }で囲まれます。 {=IF(COUNT(IF(ISERROR(MATCH(Sheet1!$A$2:$A$20,Sheet2!$A$2:$A$9,0)),"",ROW(Sheet1!$A$2:$A$20)-1))>=ROW()-2,INDEX(Sheet1!$A$2:$A$20,SMALL(IF(ISERROR(MATCH(Sheet1!$A$2:$A$20,Sheet2!$A$2:$A$9,0)),"",ROW(Sheet1!$A$2:$A$20)-1),ROW()-2)),"")} ここで、 Sheet1!$A$2:$A$20 は、Sheet1の見込み客リストです。範囲はデータがなくても適当に決めてください。 Sheet2!$A$2:$A$9 は、Sheet2の現在の契約者リストです。範囲はデータがなくても適当に決めてください。 ROW(Sheet1!$A$2:$A$20)-1 は、Sheet1の見込み客リストの位置を決めています。リストが2行目から始まっているので、行番号-1で、2行目のデータが1番目ということです。リストが3行目から始まるのなら、-2します。 ROW()-2 契約済みリストの位置です。契約済みリストの出力が3行目からなので、行番号-2で1番目のデータです。リストを4行目から始めるなら、-3します。 これらは、実際の表に合わせて設定してください。 以下契約済みリストの他の項目も必要なら、 契約済みリストのB3に、 =IF($A3<>"",VLOOKUP($A3,Sheet1!$A$5:$G$20,COLUMN(),FALSE),"") といれて、下および右方向にフィルドラッグしてください。必要な項目が表示されます。 関数の意味の説明はしませんが、ここまでの説明でうまくいかなかったら、2度ほどは追加質問に応じますが、それ以上は付き合いませんので、あきらめましょう。
お礼
okormazdさん、ご連絡が遅くなり申し訳ございませんでした。 非常に丁寧なご回答ありがとうございました。 また」、知識が足りずに、質問内容が曖昧になってしまい ご迷惑お掛けしました。。 早速試してみます!