• ベストアンサー

エクセルの質問です。

エクセルの質問です。 二つのシートがあり、Aのシートには全顧客情報が入っています。約一万件です。 もう一つのBのシートも顧客情報なのですが、Bシートに載っていない顧客情報をAシートから取り出したいのです。 それぞれのシートには、顧客コード、顧客名、契約金額、住所などがあり、その情報も一緒に取り出したいのです。 関数、マクロなどは初心者なので、詳しく教えてくださると助かります。 宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

・Aシートに作業列を用意し、B列への出現回数を求めます。 ・出現回数0回のものを取り出してBシートへコピペします。 これを説明します。 まず、AシートのE列を作業列とします。また顧客コードがA列にあるとします。1行目はタイトルとします。 E1に「Bシート出現回数」と入力します。 E2以下に次の式をフィルします。 =COUNTIF(Bシート!A:A,A2) A-E列を選択して「データ」-「オートフィルタ」でフィルタを設定します。 http://www.eurus.dti.ne.jp/~yoneyama/Excel/filter.htm E列「0」でフィルタをかけます。 全体を選択してコピーしBシートへ貼り付けます。 動作が重くなるようなら、E列はコピー・値貼り付けして式ー>値にしてください。

fagus06
質問者

お礼

大変参考になりました! オートフィルタのURLも参考になりました。 とても分かりやすく、簡単に処理することができました。 ありがとうございました!

その他の回答 (2)

  • mmtok
  • ベストアンサー率52% (12/23)
回答No.3

関数、マクロを使わず簡単に出来るかも知れません。 前提条件として、 Aシート、Bシート共に列に付けているタイトルと並びが同じでBシートに空行がない場合です。 方法BシートをコピーしてCシートとします。 この時最終行を覚えておく Aシートの全行(シート全体ではないです)を選択しコピー、Cシートで「編集」→「形式を指定して貼り付け」とし、加算を選びます。 2行目のから先に覚えていた最終行迄を行削除する。

fagus06
質問者

お礼

回答ありがとうございます! 簡単なデータで試してみましたが、このような方法でも抽出できたので驚きました。 ただ、顧客コード(10桁の数字)や金額なども加算されてしまったので、数字も文字列にするとできるのかもしれません。 この方法も参考にさせていただきたいと思います。 本当にありがとうございました!

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.2

こんばんは! 色々方法はあるかと思いますが・・・ 一例です。 ↓の画像で説明させていただきます。 Sheet1の最右側の列の隣を作業用の列とさせてもらっています。 画像ではE列になりますので E2セルに =IF(A2="","",IF(COUNTIF(Sheet2!$A$2:$A$10000,Sheet1!A2),"","○")) という数式を入れ、フィルハンドルの(+)マークでダブルクリックします。 これでSheet2にないものだけに「○」が付きますので メニュー → データ → フィルタ → オートフィルタ でE列が「○」の物だけを抽出します。 これでSheet2にないものだけが抽出できます。 もし必要なら作業列以外をコピーしてどこか別Sheetに貼り付けてもOKかと思います。 尚、顧客コードで参照していますので、当然重複はないものだと思っています。 それからSheet2のデータ量は10000行までの数式ですので 範囲指定の領域はデータ量によってアレンジしてください。 当方使用のExcel2003での回答になります。 以上、参考になれば幸いですが、 他に良い方法があれば読み流してくださいね。m(__)m

fagus06
質問者

お礼

大変参考になりました! それほど難しい作業でもないようで良かったです。 これを機会にしっかりエクセルの勉強をしようと思います。 ありがとうございました!

関連するQ&A

  • エクセルの関数の質問です。

    エクセルの関数の質問です。 1日の案件数を求めるのは簡単ですが、同顧客が1日に何度も混在する場合の1日の顧客数の 求め方がわかりません。 種類の数え方の応用編でしょうか?どなたか教えてください! エクセルでsheet1のA2からA400までが顧客番号(文字列。空白含む。)、B2からB400までが日付(1日から31日)(1から31の数値。空白含む。)、sheet2のA2からA32までが1日から31日まで、のとき、sheet2のB2からB32にその日ごと(B2ならA2(1日))の顧客数を出す数式を教えてください。 ※sheet1の顧客番号、日付は、同じ顧客番号、同じ日付も含まれ、混在しています。 ついでにsheet2のC2からC32までに1日の案件数も出したいです! 例) sheet1 A  B 05 1日 05 1日 03 1日 01 1日 01 2日 01 2日 06 2日 05 2日 03 2日 sheet2 A   B   C 1日 3名  4件 2日 4名  5件 3日 0名  0件 4日 0名  0件 sheet2のBとCを数式にしたいです。

  • エクセルのセル参照

    エクセル2007です。教えてください。 Sheet1のA1に「郵便番号」、A2に「住所」、A3に「氏名」、A4に「請求金額」を入力するとします。 これを100件入力すれば、「1」から「100」の行を使いますよね。 次にSheet2に請求書を作ります。A1に「郵便番号」、A2に住所、B1に「氏名」、C1に「請求金額」を 表示させたいのです。連続させてSheet1のセル参照を使うと、行が違うので直してやらなければなりません。 1件や2件ならともかく、100件となると…。関数では無理なんでしょうねえ。ではマクロ? どういうマクロを組んだらいいのか教えてください。

  • エクセル関数2

    シート(1) A B C D 作業列    コード    顧客名     金額 3        300001     A 10,000 3        300002   B 15,000 3        300003   C 20,000 3        300004   D 25,000 3        300005   E 30,000 4        400001   F 35,000 4        400002   G 40,000  4 400003 H 45,000 4 400004 I 50,000 4 400005 J 55,000         シート(2) A B C D E F 「1」 「2」 「3」 「4」 「5」 「6」 10,000 35,000 15,000 40,000 20,000 45,000 25,000 50,000 30,000 55,000 ※ シート(1)にコード、顧客名、金額を入力すると、シート(2)にあるように該当するコードの先頭行の列に表示するようにしたいと思っています。 シート1で作業列を作りその作業列を基にシート2でVLOOKUP関数を使い‥シート2の10,000のセルの場合、 VLOOKUP(C$2,sheet1!$A$3,$D$12,4,false)として、下にコピーすると同じ金額になってしまいます。 セルが空白にならず、シート1の金額が上から順番にシート2に表記されるようにするにはどうしたらよいでしょうか。マクロはできませんので、関数で詳しく教えて下さい。宜しくお願いします。

  • エクセルの数式を教えてください。

    請求書内訳を作成しているんですが、 どの数式を使ったら、下記の操作ができるかがわからず、つまずいています。 ■Sheetの詳細 Sheetは2種類あります。 Sheet1:請求書内訳 (顧客名、契約金額、合計金額)*顧客へ送るもの。 Sheet2:顧客名のコード表 (顧客コード、顧客名、契約金額) ■したいこと 「顧客コードを入力すると、顧客名と契約金額が表示される仕組み」を作りたいのです。 VLOOKUPを使ってみたのですが… Sheet2のデータを参照し、Sheet1の顧客名欄に顧客名を表示することはできましたが、 Sheet1へのコードを入力により、Sheet1へデータ(顧客名)を表示させる(Sheet2より引き出す)ことができませんでした。 *Sheet1の顧客名欄で使用した式はこちらです。 =VLOOKUP(Sheet2!A4,Sheet2!$A$4:$C$44,2,FALSE) 説明が分かりにくくて申し訳ありませんが、Sheet1へのコード入力のみで、 Sheet2からSheet1へデータ(顧客名、契約金額)を抽出、表示することはできるのでしょうか?

  • エクセル2003のVBA

    お尋ねします。 契約書管理台帳をエクセル2003で作成中です。 シート1には、日付、契約書名、顧客コード、顧客名等 シート2には、顧客コード、顧客名等、顧客名カナ等、顧客情報がリストになっています。 契約書が来たときに、顧客コードをシート2より、ひっぱりたいのです。 リストを考えたのですが、500件ほどあり、とても選べません。 なので、イメージとして カナ検索、例えばフォームに、グーといれれば、グー株式会社を検索し、 0001というコードをセルに表す、という感じです。 VBAを使わなくて良ければ、それが一番いいのですが、色々検索すると、 使わないとできなさそうなので。。。。 どなたか、ご教授ください。よろしくお願いします。

  • EXCELの統合のよい方法を教えてください

    EXCELのデータの統合の仕方で教えてください。 2つのシート 顧客コード  顧客名 顧客名2 顧客名3 1月 2月  1      A   A2  A3   30  50     2      B   B2  B3   40  20  4      D   D2  D3   21  80  2      B   B2  B3   41  42        3      C   C2  C3   32  45     1      A   A2  A3   11  20 で2つのシートを統合すると顧客コードと1月 2月は統合されるのですが顧客名がブランクになってしまいます。今はVLOOK関数を用いて顧客名をいれているのですが、統合の作業だけでこの顧客名も入る入り方はありますか?やはり統合は数字だけしかだめですか?      何か顧客コードと顧客名を1つのものとしてグループ化するような方法はありますか?教えてください。

  • 会社の上司に、エクセルでマクロを作って欲しいと頼まれました。

    会社の上司に、エクセルでマクロを作って欲しいと頼まれました。 セールスの仕事をしており、シート1とシート2に情報を記入しています。 A:確定したセールス情報 B:未確定情報 訪問した日に、相手の情報をBシートに記入し、それが確定したらAシートに移しています。 取引が完了したらAから消しています。 頼まれたマクロは、 ・Bシートでボタンを押すとBシートの顧客情報がAシートの空いているセルに移動(コピーではなく、移動です)。 ・Aシートでボタンを押すと、顧客情報が並べ替えられる(上から古い取引順) ボタンを二つにわける理由としては、エクセルの更新は会議中にするためです。 会議中にBからAに移動、終わってからAを並べ替えるという手順です。 エクセルの特徴としては、 セルA1に顧客名を入力しています。 その他情報も入力しているので、一人の顧客に対して、A1~G5まで入力しています。 一人の顧客に数行使用しているため、次の顧客名はセルA6に入力しています。 (A1,A6,11,A16,A21…という感じで顧客名が入力されています) 次の会議が水曜日にあるため、焦っております。 どうかお助けください。

  • エクセルで初心者で困っています。こんな事できますか?

    ・シート1のA列には「装置番号」、B列には「装置名」、C列には「顧客名」、D列には「住所」、E列には「電話番号」が入っています。「装置番号」と「装置名」は重複することが無いように設定されています。因みにデーター数は5000件位です。   このときシート2のA1に「装置番号」、B1に「装置名」を入れるとシート1の該当する行の「顧客名」、「住所」、「電話番号」がシート2のC1,D1,E1に自動的に出るようにしたいのですがなかなか出来ません。  本も買ってきて、関数を勉強中ですが旨く行きません。又、エクセルで難しい様なら、他の方法も教えていただければ幸いです。よろしくお願いします。

  • エクセル 検索マクロについて

    エクセル マクロの超初心者です。似たようなQ6Aもありますが、応用できません。どなたかよろしくお願いします。  A B   C    D     E    F   G 1 No 店番 店名  顧客番号 顧客名 商品 売上金額 2 1 100 日本橋 1234567 浅草太郎 B  10000 3 2 200 京橋  2345678 横浜花子 H  30000 4 3 200 京橋  3456789 東京次郎 B  10000 5 4 300 後楽園 4567890 川崎洋子 H  30000 と以下、1000件程度店番順に並んでいます。 別シートに店番を入力すると、その別シートにその店番だけのデータが 抽出され、表示できるようなマクロを登録したいのです。 ご教授お願いいたします。

  • エクセル VLOOKUPとの複合?

    Sheet2に顧客名簿があり、 A:顧客名 B:住所と入っています。 Sheet1には B4:B34とH4:H34に顧客名が入り、 C4:C34とI4:I34にそれぞれVLOOKUPで住所が転記される仕組みになっています。 しかし、顧客数が膨大(1万件前後)なため、顧客名を間違えることが多々あり、転記されない場合が多いです。 なんとか、これを解消したいのですが、何か良い方法はありませんか? ・例えばABCが含まれる顧客を検索ボックスなどから選択をして転記 情報がかなり不足していて申し訳ありませんが、よろしくお願いします。

専門家に質問してみよう