- 締切済み
エクセルで該当者データを抽出してリスト化できず・・・悩んでいます
いつもエクセルテクニックを学ぶために活用させていただいております。 今回はみなさまの過去の質問を見ても解決できなかったので、質問させていただきました。 ■使用しているデータ 営業スタッフ向けに顧客リストを作成しています。 私のほうで、全営業スタッフの担当する顧客名、業種、購入額の一覧を作りました。 【EXCELのシート1】 A列 B列 C列 D列 営業 顧客名 業種 購入額 1 山田 A社 食品 10万 2 山田 B社 食品 20万 3 山田 C社 医療 10万 4 田中 D社 食品 30万 5 田中 E社 小売 15万 ■作りたいもの 各営業スタッフが自分の名前を入力すると、自分の顧客の名前、業種、購入金額を検索でき、リスト化できる機能です。 具体的にいうと・・・ 1)シート2のA1に自分の名前(例:山田)を入力 2)シート2のA3以下に担当顧客が表示される 【EXCEL シート2】 A列 B列 C列 D列 1 山田 2 3 山田 A社 食品 10万 4 山田 B社 食品 20万 5 山田 C社 医療 10万 私自身マクロに詳しくなく・・・大変困っております。 オートフィルタを使えばいいのですが、営業スタッフが エクセルに精通しておらず恐らく使いこなせないのです。 「A1に自分の名前を入力してください」と言うだけで リスト化できる機能についてどなたかご教授いただければ幸いです。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- mitarashi
- ベストアンサー率59% (574/965)
ピボットテーブルでやれば、こんな感じです。 <1案> ..1.........営業...........山田←ページフィールドで営業担当者名を選択 ..3合計 : 購入額................................. ..4.....顧客名...........業種..........計 ..5...........A社...........食品...100000 ..6...........B社...........食品..200000 ..7...........C社...........医療...100000 ..8.........総計.....................400000 なお、小計を消す操作をしています。 <2案> A列で表示したい営業マン名だけにチェック ..1合計 : 購入額........................................ ..2.........営業.顧客名.....業種..........計 ..3.........山田.......A社.....食品...100000 ..4........................B社.....食品..200000 ..5........................C社.....医療...100000 ..6...山田 計............................400000 ..7.........総計............................400000 ご参考まで。
- n-jun
- ベストアンサー率33% (959/2873)
シート2のタブを右クリック>コードの表示で表示されたシートモジュールにコピペ。 Private Sub Worksheet_Change(ByVal Target As Range) Dim r As Range Dim rr As Range If Target.Address <> "$A$1" Then Exit Sub Range("A3", Cells(Rows.Count, Columns.Count)).ClearContents With Worksheets("Sheet1") 'シート名適宜変更 Set r = .Range("A1").CurrentRegion r.AutoFilter 1, Target.Value Set rr = Intersect(r.SpecialCells(xlCellTypeVisible), _ .Range(.[A2], .Cells(Rows.Count, Columns.Count))) If Not rr Is Nothing Then rr.Copy Range("A3") End If r.AutoFilter End With End Sub ご参考程度に。
お礼
お返事遅くなって申し訳ございません。 マクロまで作っていただきありがとうございました!!
- hallo-2007
- ベストアンサー率41% (888/2115)
ISERROR関数があります。 =IF(ISEROR(SMALL(シート1!$E:$E,ROW(A1))),"", INDEX(シート1!A:A,SMALL(シート1!$E:$E,ROW(A1))) 等の方法があります。
お礼
お返事おそくなりました。 ありがとうございました!!
- hallo-2007
- ベストアンサー率41% (888/2115)
作業列を使いますが シート1の列にでも =IF(A2=シート2!A$1,ROW(),"") で下までコピィすれば 山田さんのときだけその行番号が出ます。 シート2のA3は =INDEX(シート1!A:A,SMALL(シート1!$E:$E,ROW(A1)) で右へコピィ、下へコピィで試してみてください。 (エラー処理なしです) 以下の様な紹介がいくつでもあると思います。 http://oshiete1.goo.ne.jp/qa4261978.html
お礼
hallo-2007様 早速、回答いただきありがとうございました!! やってみたところ、無事対象者顧客が表示できました。 下へコピーしたところ、対象顧客が少ない人だと #NUM! という表示がでてしまうのですが・・・これは消せないものなのでしょうか?? できれば空欄になってくれると、プリントアウトしたときに 美しくてとても助かるのですが・・・。 もしご存知であれば教えていただければ幸いです。
お礼
お返事が大変遅くなって申し訳ありませんでした。 ありがとうございます!