[[20120226011042]] 『オートフィルタ結果の様な関数』(ともぴ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『オートフィルタ結果の様な関数』(ともぴ)

 売上レポートがあり、指定した売上番号のみの売上内容を表示させたいのです。
 オートフィルタではエクセルのバージョンが古いため表示される件数に限界があり、
 すべての売上番号が表示されません。
 VLOOKUUP関数ですと、一つの売上番号に3件の品名があっても先頭の1件しか
 抽出されないので使えません。
 何かよい数式はありませんでしょうか。

●売上レポート内容(sheet1)

       売上日(A列)  売上番号(B列)    品名(C列)    金額(D列)
  1    2012/02/01      1234         あいうえお     1,000
  2    2012/02/01      1234         かきくけこ     2,000
  3    2012/02/01      1234         さしすせそ     3,000
  4    2012/02/02      1235         たちつてと     4,000
  5    2012/02/02      1235         なにぬねの     5,000
  6    2012/02/02      1235         はひふへほ     6,000
  7    2012/02/03      1236         まみむめも     7,000
  8    2012/02/03      1236         や ゆ よ    8,000
  9    2012/02/03      1236         らりるれろ     9,000

             ↓ 売上番号 1234 のみ、sheet2に抽出したい

●抽出結果(sheet2)

  例えばA1セルに 検索値の1234 と入力すると・・

       (A列)     (B列)         (C列)           (D列)       (E列)
  1    1234  2012/02/01      1234         あいうえお     1,000
  2        2012/02/01      1234         かきくけこ     2,000
  3        2012/02/01      1234         さしすせそ     3,000

  の、様に表示させたいです。
  よろしくお願いします。

 [エクセルのバージョン] Excel2002
 [OSのバージョン]   WindowsXP

 件数はどれぐらい?
2002のことはわからないけど、オートフィルタで対処できないぐらいの膨大な行数があるとすると
少なくとも、Sheet1の行数分、Sheet2の各行のセルにすべて関数をいれておく必要があるので現実的じゃないのでは?

 2003(以降)で、この構成なら、自分であれば、Sheet2にもタイトル行を記入したレイアウトにして
フィルターオプションを使うな。絶対に。

 ということじゃなく、件数が多い少ないにかかわらず、ヒットする行を上詰めに転記する式を勉強したいということならスルーして。

 (ぶうらっと)

 > オートフィルタではエクセルのバージョンが古いため表示される件数に限界があり、
 > すべての売上番号が表示されません。

 (1)売上番号の数が1,000件を超えてるということですよね。
   Sheet1は現在何行ぐらいまでデータがあるんですか?
   今後も増えつづけるなら最大どのくらいまで行きそうですか?

 (2)そのサンプルでは売上番号は昇順になっていますが
   実際のSheet1も1件の例外もなく昇順になっているんですか?

 (3)1つの売上番号で最大何個あるんですか
   つまり1度に抽出される件数は最大どのくらいですか?
   > 一つの売上番号に3件の品名があっても
   とありますが多くても1桁?
   数式でやるとしてですが、10件もないのであれば数式を入れるのは10行ちょっとで十分です。
   Sheet1の行数にあわせる必要はありません。

 (4)とは言っても抽出は数式でやるよりもフィルタオプションの方がいいです。
   2002でも同じこと。
   オートフィルタではなく、フィルタオプションではダメなんですか?
   というか使ったことあります?

 (JPN)


 当然と言えば当然なのですが?
 売上番号を約1100種類、データ数約4400件で、Win98、Excel97を使ってフィルタオプションで
 問題無く抽出出来ました

 もし、一々手でのプロパティを設定するのが面倒なら、マクロの記録を取って少し手を加えれば 宜しいのでは?

 Sub Macro1()
 '
 ' Macro2 Macro
 ' マクロ記録日 : 2012/2/26  ユーザー名 : Bun
 '

 '
    Range("A2").Select
    Application.CutCopyMode = False
    Sheets("Sheet1").Range("A1").CurrentRegion.AdvancedFilter Action:=xlFilterCopy, _
        CriteriaRange:=Range("A1:A2"), CopyToRange:=Range("B1:E1"), Unique:=False
 End Sub

 ※リスト範囲を「.Range("A1").CurrentRegion」に代えて有ります
 尚、Sheet2は列見出しを必ず入れて下さい

 ●抽出結果(sheet2) 

       (A列)     (B列)         (C列)         (D列)        (E列)
  1    売上番号 売上日      売上番号         品名         金額
  2    1234  2012/02/01      1234         あいうえお     1,000
  3        2012/02/01      1234         かきくけこ     2,000
  4        2012/02/01      1234         さしすせそ     3,000

 (Bun)


 >一々手でのプロパティを設定するのが面倒なら

 自分なら、Bunさんと同じくマクロ処理をするけど、このケースでは、一度操作をしておけば
次回フィルターオプションを動かしたとき、リスト範囲以外はプロパティが残っているので
リスト範囲だけ、Sheet1のA:Dを選び、加えて指定した範囲のチェックもはずれているので、そこをチェックしてOK。
そんなに、面倒でも無いと思うね。

 (ぶらっと)

 そう、どちらにしろフィルタオプションが善いかも?

 (Bun)


 皆様

 早々に貴重なご回答を頂きまして、ありがとうございました。
 お恥ずかしい話しですが、オートフィルタは知っていましたが同じ場所にある
 フィルタオプションを利用したことがありませんでした。
 早速、フィルタオプション機能を検索して調べたところ、
 希望のデータを抽出できそうな気がいたします。
 (現在excel環境が無いため確認ができておりません)

 フィルタオプションでうまく使えましたら関係なくなりますが、
 ご質問がありました件にお答えいたします。

 件数は一年で約24,000件といったところでしょうか。
 しかし、実際2、3ヶ月間のデータでの利用ですので多くて6,000件と思います。

 順番は、だいたい売上番号は昇順になっています。
 時々前後するときもあります。

 1つの売上番号に対して1〜6件です。
 これ以上増えることはありません。

 --------------------------------------------------

 明日、早速フィルタオプションを利用してみます!
 助言をいただきまして、ありがとうございました。

 (ともぴ)

 >オートフィルタではエクセルのバージョンが古いため表示される件数に限界があり
 これは、「▼の候補の中に全て表示されない」って事ですよね。。。?

 フィルタオプションを使うにしても、番号の手入力は必要だと思うので
 オートフィルタのオプションを開いて直接入力しても良さそうに思いますが。。。

 (HANA)

 HANA様

 はい。
 「▼の候補の中に全て表示されない」ということです。

 今日、会社で先に教えていただいたフィルタオプションでやってみたのですが、
 指示がうまく設定できずに業務終了となりました。
 明日は直接入力でやってみます!
 ありがとうございます。

 フィルタに関して完全な勉強不足でした。。。


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.