この人頭いいなと思ったエピソード

タイトルの件、質問いたします。

下記の図をご覧ください。

図1のエクセルデータ【名簿】と図2のエクセルデータ【名簿】をぶつけて
図3のエクセルデータを作りたいと考えています。

図1のデータには、NOを1~5まで、ふられた、5人の名簿です。
図2のデータには、NO1、NO2、NO4、NO5、NO6までの5人の名簿です。

図2は、図1と比較して、NO3のCさんがいません。さらに、NO6のFさんがいます。

やりたい事は

図1のデータに、図2で追加されている、NO6のFさんを追加したいのです。
⇒図1になくて、図2に追加されている人を、図1に追加して図3を作りたいです。

これは、数件を例にしていますが、実際は、何千件という中で、進めます。
よって、誰がダブっていて、誰が新しく追加されたかは、手作業では大変です。

これを見つけるやり方を、エクセルで、できないか検討しています。
アクセスでは、簡単にできると聞いた事はあります。

アクセスの場合は、初心者ですので、簡単に説明していただけると幸いです。

【エクセルバージョン】
2002、2003
【アクセスバージョン】
2003

「2つのエクセルデータを【ぶつけて】、デー」の質問画像

A 回答 (3件)

エクセル操作例です。


図1をSheet1、図2をSheet2としてSheet3に抽出します。
(1)Sheet2のデータをSheet1の最終行にコピー&ペースト
(2)Sheet3のA1を選択→フィルタ→フィルタオプションの設定→指定した範囲を選択→リスト範囲欄にSheet1!$A:$B、抽出範囲欄にA1、重複するレコードは無視するを選択→OK
(3)Sheet3はNOで並び替え(昇順)をして下さい。
    • good
    • 1
この回答へのお礼

素早い回答ありがとうございました。
大変、わかりやすく、助かりました。

お礼日時:2011/10/05 17:31

こういうのは、バッチ処理(データが出来上がっていて、作業が終わるまでは動かないデータの処理)ではマッチング(または併合=マージ)というアルゴリズムで出来る。

このアルゴリズムはアルゴリズムの本に書いてある代表的なもの。
次のたとえでイメージが判るだろう。
各人は自分の番号を書いた番号札を持つ。
両グループの各人は両グループ2列に並び、各グループの中で番号の順に並んで出番を待つ。
会場に左右2つの椅子が(両グループの対戦用の席)があるとする。
両グループ(本質問では図1のデータと図2のデータ)から1名(本質問では1行のデータ)ずつ、自分の番号を書いたカードを持って出て、自分のグループの椅子に腰をかけて、カードをだして番号を見せ合い、番号の大小で勝負する。
A。同じときーー>両方とも退場(椅子を明け渡す)
 両グループから次の順番のもの1名ずつが両方の椅子に座る
B。右の席の番号が小さいーー>右(小さい方)の者が退場。
.退場したグループの椅子には、そのグループの次の順番の者が椅子に座る。
C。左の席の番号が小さいーー>左(小さい方)が退場。
.退場したグループの次の順番の者が、そのグループの方の椅子に座る。
引き分けや負けて退場する(椅子を明け渡す)ときは、その番号と持っているデータを出口のノートに上行から順に詰めて書き留める(コンピュター的にはアウトプットすること)。2人同時退場のときは1方だけがノートに書く
ーー
但し
初回だけは両グループから1名ずつ席に着く(上記ルールの例外)
両グループが同数・最後が同キーで無いと相手が途絶えるときが在る。その後の勝負はどうするか。そのときも上記のルールを適用できるよう、自分が最後なら次に両グループで一番大きいと思われる番号札を椅子席に置いて退場する。
最後に大きい番号札だけ残ったら終了(上記のAのケースで終了)。普通はこういう工夫がされる。
ーーーー
こういう方法で
・質問のようなことや、
・両者付き合うべきものの不突き合い(1方を中心にして、キー的に見て漏れや余分)がわかり
・両者の内容が同じかどうかチェック
・両ファイルのデータの結合が出来る(一方に番号ー住所、1方に番号ー年齢があるとき、番号ー住所ー年齢のファイルが作れる)
今回は質問者がVBAをわかるかどうか(多分出来ない)と思うのでコードは書かない。(今まで回答に書いたことはあある)
ーー
この処理方法は、両レコードを1回だけ読めば終わるので、能率が良い(ソートという処理時間を別にすると)
関数とかで処理が重たくなったらこういう方法を考えないといけないだろう。
A.エクセルの範囲内なら、既に出ているフィルタオプションを使う
B。エクセルのデータを一旦アクセスに移し(写すのは簡単)、アクセスで処理する
C.出来合いのソフトがあるかもしれない
などが考えられる。
    • good
    • 0

図1がシート1に有り、図2がシート2にあるとして、図3をシート3に作るとします。


シート3のA2セルから下方にはNoを入力します。
その上でB2セルには次の式を入力して下方にオートフィルドラッグします。

=IF(A2="","",IF(COUNTIF(Sheet1!A:A,A2),INDEX(Sheet1!B:B,MATCH(A2,Sheet1!A:A,0)),IF(COUNTIF(Sheet2!A:A,A2),INDEX(Sheet2!B:B,MATCH(A2,Sheet2!A:A,0)),"")))

この回答への補足

すばい、回答ありがとうございます。関数できれいに抽出できました。

補足日時:2011/10/05 17:30
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報