回答受付中の質問
エクセル(EXCEL2007)のオートフィルター機能を利用していますが、反応速度と抽出件数の上限問題の2点で、不自由を感じています。
データ件数が6万件以上なのが主因でしょうが、それでも今年発売のPCで使用しているので、もうちょっときびきび実用的に動いて欲しいもんだと言う潜在的不満が有ります。
「フィルターオプションの詳細設定」を使用すれば良いのかと思いますが、ヘルプやネットのQ&Aを読んでも概念が理解できません。
以下の様な流れでシート作成したいのですが、どうすれば良いのでしょうか?宜しくお願いいたします。
●Sheet-1:元データシート
●Sheet-2:抽出業種指定シート
●Sheet-3:結果反映シート
●Sheet-1
A列 B列
【会社名】【業種】
ABC商事 損害保険,生命保険,リース業
BBC商会 WEB製作,生命保険
BDD商店 通信販売
(6万行位)
●Sheet-2
A列
【抽出業種】
生命保険
携帯電話販売
スーパーマーケット
ホームセンター
(1~最大2000行位まで)
●Sheet-3
A列 B列
【会社名】【業種】
ABC商事 損害保険,生命保険,リース業
BBC商会 WEB製作,生命保険
投稿日時 - 2010-03-17 09:26:28
3人が「このQ&Aが役に立った」と投票しています
回答(4件中 1~4件目)
>エクセル(EXCEL2007)のオートフィルター機能を利用していますが、反応速度と抽出件数の上限問題の2点で、不自由を感じています。
具体的にどのような操作をしたときに反応速度が遅いのか、また抽出条件の上限の意味がわからないのですが、今回のような条件なら、以下のようなフィルタオプションの設定を利用します。
エクセル2007のフィルタオプションの設定は「詳細設定」から行いますが、この場合、検索条件は前方一致となりますので、以下のようなワイルドカードを使った検索条件を作る必要があります。
セルに検索条件を含むセルを抽出したいなら、Sheet2のB列に(A1セルが項目名でA2セルから条件が入力されているならB1セルにA1セルと同じ項目名を入力)以下のような数式を入力し、下方向にオートフィル(セルの右下をダブルクリック)します。
="=*"&A2&"*"
このB列の抽出条件のデータ範囲を項目名を含めて選択し、画面左上の名前ボックスに、たとえば「抽出条件」と入力し(名前の定義からでもOK)、Enterキーを押して、この範囲に「抽出条件」と名前を付けます。
同様にSheet1のデータ範囲(A列とB列)を選択し、この部分にもたとえば「データ範囲」と名前を付けておきます。
表示したいSheet3を選択し、「データ」「並べ替えとフィルタ」の「詳細設定」をクリックし、リスト範囲に「データ範囲」、検索条件範囲」に「抽出条件」と入力し、指定した範囲にチェックを入れ、たとえばA1セルを指定して「OK」してみてください。
投稿日時 - 2010-03-17 11:47:05
補足
御丁寧な解説ありがとうございました。
ただ、私の理解が悪く、以下作業がどうも上手く出来ませんでした。。。
> このB列の抽出条件のデータ範囲を項目名を含めて選択し、画面左上の名前ボックスに、たとえば「抽出条件」と入力し(名前の定義からでもOK)、Enterキーを押して、この範囲に「抽出条件」と名前を付けます。
>
> 同様にSheet1のデータ範囲(A列とB列)を選択し、この部分にもたとえば「データ範囲」と名前を付けておきます。
>
> 表示したいSheet3を選択し、「データ」「並べ替えとフィルタ」の「詳細設定」をクリックし、リスト範囲に「データ範囲」、検索条件範囲」に「抽出条件」と入力し、指定した範囲にチェックを入れ、たとえばA1セルを指定して「OK」してみてください。
もし、可能なら、フィルターオプション以外の方法(マクロ等)で、私の問題解決案があるならご提示頂ければ幸いです。(無いときは別個質問立ち上げさせてもらいます。)
投稿日時 - 2010-03-22 20:56:24
「オートフィルタ▼」で,2000件もの検索データをチェックしていくのは現実的な操作ではありませんね。
現状まだ「フィルタオプションの詳細設定」を使って絞り込みに一度も成功した事が無いというご質問でしたら,次のように操作します。
シート1:
A1に 会社名 と記入し,A2以下に次のデータを記入する
ABC商事
BBC商会
BDD商店
B1に 業種 と記入し,B2以下に次のデータを記入する
損害保険,生命保険,リース業
WEB製作,生命保険
通信販売
シート2:
A1に 抽出業種 と記入し,A2以下に次のデータを記入する
生命保険
携帯電話販売
リース業
ホームセンター
C1に
=Sheet1!B1
と記入する
C2に
=IF(A2="","N/A","*"&A2&"*")
と記入し,C3以下十分沢山のC3000セルまでコピーしておく
シート3は空にしておいて,おもむろに並べ替えとフィルタグループの「詳細設定」を開始する。「列見出しが含まれているか特定できません」のダイアログが出たときは,無視して続行する。
抽出先は 指定した範囲
リスト範囲は Sheet1!A:B
検索条件範囲は Sheet2!C1:C3000
抽出範囲は Sheet3!A1
としてOKすると,出てきます。
検索条件範囲に与えるセル範囲などを間違えると,全部が出てきたり何も出てこなかったりします。
投稿日時 - 2010-03-17 11:30:59
補足
御丁寧な解説ありがとうございました。一度は成功したのですが、もう1度やろうとすると
>>全部が出てきたり
してしまいました。
それと贅沢を言って申し訳ないのですが、
> 抽出先は 指定した範囲
> リスト範囲は Sheet1!A:B
> 検索条件範囲は Sheet2!C1:C3000
> 抽出範囲は Sheet3!A1
の指定を毎回入力しなければならないのは不便に感じてしまいます。。
何らかの方法で、一度入力した設定を使いまわす事できないでしょうか。。。
フィルター機能とは、全く違った方法でも構いません。
ややこしくなるようなら、この質問閉じて、別個質問させていただきます。
投稿日時 - 2010-03-22 20:51:57
データ件数が6万件以上なのが主因です。アクセスをお勧めします。
投稿日時 - 2010-03-17 09:29:06
補足
コメント有難うございました。そうですか仕様上の限界っぽいんですね。。
しかし、
(1)多少反応が遅くても構わないので、私が書いたようなシート別の抽出設定と言うのをEXCEL上では出来ないのでしょうか?
(2)accessは初歩の初歩しか分かりませんが、wizard機能が思ったより貧弱で、「これだけ前準備して、この程度の自由度の抽出結果かい。。」と言う所感を昔に持ってしまったんですが、
私が今回書いたシート別の抽出作業なんかは、accessを正しく学べば、うってつけの作業なんでしょうか?
投稿日時 - 2010-03-17 10:55:46