- ベストアンサー
Excelでのデータ抽出方法
お世話になります。Excelで下記のような同じ得意先が複数存在するリストから 得意先が重複しないようにリスト化(得意先1つにつき1行)することは可能でしょうか? レコード数が2万件近くあり、手作業では大変で困っております。 また、Excelで無理であればAccessに取り込んで作業をすることも可能です。 (最終的にはエクセルファイルとして出力希望です) 何かよい方法をご存知の方がいらっしゃいましたらご指導願います。 よろしくお願いいたします。 【抽出前】 項目 得意先名 01 A 02 B 03 B 04 B 05 C 06 C 07 D 08 E 09 E 10 F 【抽出後】 項目 得意先名 01 A 02 B 03 C 04 D 05 E 06 F
- snow-hat
- お礼率92% (39/42)
- オフィス系ソフト
- 回答数6
- ありがとう数8
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
VBAマクロで重複のないリストを作成する方法です。何度か紹介したことがありますが、Directoryオブジェクトを利用します。 他にも方法はありますが、高速(2万件程度でしたら数秒)で重複のないリストが抽出できます。お試し下さい。 【手順】 1. [Alt]+[F11]でVisual Basic Editor起動(以下VBE) 2. VBE画面で[挿入]-[標準モジュール]クリック 3. 2.で開いたウインドウに下記VBAコードをコピー&ペースト 4. VBEを閉じる 5. 抽出範囲のセルを選択 -->例えば得意先名のあるセルB1~B20000を選択します 6. [ツール]-[マクロ]-[マクロ]で[重複データ除去]を実行 【以下VBAコード:場所=標準モジュール】(次行から終わりまで) 'Dictionaryオブジェクトを使用して重複のないリストを作成 Sub 重複データ除去() Dim objDic As Object Dim rngCel As Range Dim Sh As Worksheet '重複の無い値リスト作成 Set objDic = CreateObject("Scripting.Dictionary") With objDic For Each rngCel In Selection If Not (IsEmpty(rngCel) Or .Exists(rngCel.Value)) Then .Add Key:=rngCel.Value, Item:=Empty End If Next rngCel End With '抽出したデータがあれば If objDic.Count > 0 Then '新規シートに書き出し Set Sh = Sheets.Add Sh.Range("A1").Resize(objDic.Count) = _ Application.Transpose(objDic.keys) End If '後始末 Set Sh = Nothing Set objDic = Nothing End Sub
その他の回答 (5)
- macchan1
- ベストアンサー率38% (52/136)
単純に重複の無い得意先名を取得したいんら、フィルタオプションを利用するのが簡単です。 得意先名の列を選択し、「データ」「フィルタオプション」で「重複するレコードは無視する」にチェックをいれてOKします。 このとき、抽出された範囲を選択してコピーするか、「指定した範囲」で「抽出範囲」を設定すればそのデータだけをコピーすることができます。
お礼
ご連絡ありがとうございます。 判りやすくご説明ありがとうございます。 フィルタオプションということで処理に時間はかかりますが、一番手軽に出来る方法だと思いました。 ご対応ありがとうございました。
- jurarumin
- ベストアンサー率34% (190/544)
#1です。 画面左にある「オブジェクト」の「クエリ」を選択してください。 次に、「デザインビューでクエリを作成する」を実行します。 「テーブルの表示」でテーブルを選択する事になるので、取り込んだデータがあるテーブルを選択します。 選択したら「テーブルの表示」を閉じます。 画面上の方にテーブルと各項目が表示されるので、「項目」「得意先名」をダブルクリックします。 すると、画面下に項目、得意先名が表示まれます。 表示した項目の上で右クリックをして「Σ集計」を選択します。 ↑この状態でグループ化 で、項目の「グループ化」を「最小」に変更します。 最後に画面上にある「!」で集計を実行します。
お礼
ご連絡ありがとうございます。 今回はExcel内で処理出来る結果を優先しましたが Accessでも同様の処理が高速に出来ることがわかり 大変参考になりました。 お忙しい中ご対応ありがとうございました。
- Wendy02
- ベストアンサー率57% (3570/6232)
Excelで何種類も、この実験をしたことがあるのですが、レコード数が2万件近くとなると、はっきりと処理スピードが分かれます。 データ-フィルターフィルタ・オプションーで、重複するレコードは無視するで、抽出してしまうか、以下のようなマクロのAdvancedFilter で、 Range("A1").CurrentRegion.Offset(,1).Resize(, 1).AdvancedFilter _ Action:=xlFilterCopy, _ CopyToRange:=Range("D1"), _ Unique:=True 'D1に出力する というのが、最も速いです。関数でする方法もあるのですが、20,000件にもなると、とても、これには追いつかないです。 それから、MSクエリに設定を書く方法もありますが、それだけの手間が掛かりますね。
お礼
ご連絡が遅くなり申し訳ございません。 ご指導いただきましたマクロなのですが、当方の知識不足のためうまく動かすことができませんでした。 申し訳ございませんでした。
- denbee
- ベストアンサー率28% (192/671)
質問です。 質問者様の目的は、得意先名を重複なく全ての種類取得したいだけでしょうか? それとも、例にある「項目」の抽出方法にも何か条件があるのでしょうか?
お礼
ご連絡ありがとうございます。 ご質問頂きました件、得意先名を重複なく全ての種類取得したいだけでございます。
- jurarumin
- ベストアンサー率34% (190/544)
Accessのクエリで 項目 ← 最小 得意先名 ← グループ化 としてみると抽出されるのでは?
お礼
ご連絡ありがとうございます。 申し訳ございません、Accessに取り込みをしましたが どこで最小やグループ化の設定をしたらよいかわかりませんでした。 知識不足で申し訳ございません。
関連するQ&A
- 重複するデータの抽出について(エクセル)
エクセル2003にて重複するデータの取り出しをしたいのですが、 わからないので教えてください。 例えば A列 B列 C列 D列 E列・・・ 1 色 1回目 2回目 3回目 4回目 2 赤 あ a A 0 3 白 い b B 1 4 黄 う c C 2 5 黄 え d D 3 6 黒 お e E 4 7 赤 か f F 5 : このデータの中から、別のシートのA1に 赤と入力したら、B1にD列のA・Fを抽出 黄と入力したら、B1にD列のC・Dを抽出をしたいです。 VLOOKUP関数を使用してみたのですが、 赤と入力すると、D列のA(1番上のデータ)のみしか抽出出来ず、Fが抽出されません。 重複するデータがあるのはA列のみで、D列には重複するデータはありません。 わかりにくい文章ですみませんが、よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- エクセルの関数を使った抽出方法
エクセルの関数を使った抽出方法 お世話になります。Excelで下記のような例で同じ製品が複数存在するリストから 製品が重複しないようにリスト化することは可能でしょうか? 「重複の削除」を使わずに抽出したいです。 当方はオフィス2003使用です。 sheet1が日報でsheet2が請求書です。金額は抽出して合計しなくていいです。 あくまでも製品名だけをsheet2の請求書に抽出したいです。 何かよい方法をご存知の方がいらっしゃいましたらご指導願います。 よろしくお願いいたします。 【抽出前】sheet1 製品名 金額 A ○円 B ○円 B ○円 B ○円 C ○円 C ○円 D ○円 E ○円 E ○円 F ○円 【抽出後】sheet2 製品名 金額 A ○円 B ○円 C ○円 D ○円 E ○円 F ○円
- ベストアンサー
- 財務・会計・経理
- Excel 大量データの指定箇所に行を挿入するには??
会社でExcel作業中なのですが、、、ど~してもわからず 悪戦苦闘しています(>_<) どなたか助けて下さい! やりたいことはこんな感じです。 今の段階では得意先ごとにA項目からG項目まで並んでいます。 最終的には、得意先ごとに 「C・D項目合計」「E・F項目合計」「A・B・C・D・E・F・G項目合計」 という行を追加で挿入し、それぞれの合計値を出したいのです。 良い方法が思いつかなかったので、右クリックして 挿入を延々と繰り返し、その後計算式をコピーして入れていましたが データが5万件ほどあり(ブックが別れています)、永遠に 終わりそうもありません。。 どなたか解決法をご存知でしたら教えて下さい!宜しくお願い致しますm(__)m ☆作業前↓----------------------- A得意先 A項目 10 B項目 20 C項目 30 D項目 35 E項目 15 F項目 25 G項目 10 B得意先 A項目 10 B項目 20 C項目 30 D項目 35 E項目 15 F項目 25 G項目 10 ☆作業後↓----------------------- A得意先 A項目 10 B項目 20 C項目 30 D項目 35 C・D項目合計 65 E項目 15 F項目 25 E・F項目合計 40 G項目 10 A・B・C・D・E・F・G項目合計 145 B得意先 A項目 10 B項目 20 C項目 30 D項目 35 C・D項目合計 65 E項目 15 F項目 25 E・F項目合計 40 G項目 10 A・B・C・D・E・F・G項目合計 145
- ベストアンサー
- オフィス系ソフト
- 重複するデータの削除と抽出方法
はじめまして。 区分 ランク 001 A 002 B 002 B 003 C 004 D 005 E 005 F このようなデータを以下の条件で削除し抽出する方法を教えていただけないでしょうか。 ・区分が重複しているデータを削除したい。 ・しかし区分が重複していてもランクが異なる場合は削除しない。 ↓ 001 A 002 B 003 C 004 D 005 E 005 F エクセルとアクセス両方での方法を教えていただければ有難いのですが・・・(エクセル、アクセスとも初心者です) わかりにくい質問ですがよろしくお願い致します。
- ベストアンサー
- オフィス系ソフト
- エクセルで、条件にあう複数の行を別のシートに抽出する
《どなたか、お教え下さい》 エクセルで、条件にあう複数の行を別のシートに抽出してまとめる。 「sheet1」の下記の基本データを「sheet2」に「得意先」ごと「日付」の早い順にまとめたいのでが。関数を使ってできないものか、どなたかお教え下さい。「マクロ」や「Access」は使用したことがないので、関数を使ってやりたいと思いますが、できるものでしょうか。よろしくお願いします。 sheet1 番号 得意先 日付 商品名 商品詳細 金額 備考 1 A 2 B 2 B 4 D 5 E 6 F 2 B 3 C 5 E A B 番号 得意先 1 A 2 B 得意先名は、番号を入力することで表示されるように 3 C 関数「VLOOKUP」を使って表示させるようにしていま 4 D す。 5 E 6 F
- ベストアンサー
- オフィス系ソフト
- 【エクセル】重複データ抽出時にうまくいかない
エクセル2003で、[データ]→[フィルタ]→[フィルタオプションの設定]で下記のように 設定して重複データを省きました、 ・「指定した範囲」にチェック ・「リスト範囲」に$A$1:$A$13を入力。 ・「抽出範囲」に$B$1を入力 ・「重複するレコードは無視する」にチェック の条件で実行すると。 [元データ] A列 1 a 2 a 3 b 4 b 5 c 6 c 7 c 8 d 9 d 10 d 11 e 12 e 13 e が [フィルタ実行後] A列 B列 1 a a 2 a a 3 b b 4 b c 5 c d 6 c e 7 c 8 d 9 d 10 d 11 e 12 e 13 e の様にB列でaが2つ出てしまいます。 なにが原因でしょうか?
- ベストアンサー
- オフィス系ソフト
- データの抽出について
エクセルにてデータの抽出をしたいのですが、わからないので教えてください。 例えば、下の様なデータがあります。 回数 1回目 2回目 3回目 4回目 1000 あ a A 0 1001 い b B 1 1002 う c C 2 1003 え d D 3 1004 お e E 4 1005 か f F 5 別のシートに、 回数の1001と入力すると、3回目のBが抽出 1003と入力すると、3回目のDが抽出 1005と入力すると、3回目のFが抽出出来る様にしたいです わかりにくい文章ですいませんが、ご回答よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- 重複しないデータのみを抽出
初めまして。 初心者なりに頑張ってみたのですがうまくいかず、 エクセルかアクセスにて、下記内容を処理出来ないものか 質問させて頂きました。何卒宜しく御願い致します。 2つのデータを併せて、重複しないデータのみを抽出したいのです e.g. データ1=(a,b,c,d) データ2=(b,b,c,d,e) 求めている結果=(a,b,e) となります。 現状、手作業にてチェックしているので、 非常に時間がかかってしまい困っております。 何卒、宜しくお願いします。
- ベストアンサー
- その他(データベース)
- エクセル抽出方法がわかりません
エクセル抽出方法がわかりません A B 1 Aさん 19 2 Aさん 20 3 Bさん 19 4 Cさん 19 5 Cさん 20 6 Dさん 20 7 Eさん 19 抽出結果 A B 3 Bさん 19 7 Eさん 19 19しかない人を抽出するにはどうしたらよいのでしょうか、、
- ベストアンサー
- Windows系OS
- エクセル 重複データの抽出
エクセルを使って重複データをチェックしようと思っていCOUNTIFで試したのですがうまくいきません・・・ご存知の方教えてください。m(__)m A B C D E F 店番 顧客番号 氏名(カナ) 電話番号 住所1 住所2 という表の電話番号が重複する先を抽出したいのです。データ件数は約3000件ほどあります。できれば重複したデータは別のシートに店番順に表示をしたいのですが関数でできるのでしょうか?
- ベストアンサー
- オフィス系ソフト
お礼
お返事が遅くなりました。 納得の行く結果が得られそして処理が高速という点で 大変助かりました。 ありがとうございました。