• ベストアンサー

エクセルでフィルタオプション

質問します。 エクセルでフィルタオプションを使って、ある表のデータを抽出します。 抽出先が、“選択範囲内”を選んで抽出する。 しかし、本当に見たいデータは、その条件で抽出されなかったデータA(下記式参照)が見たい場合 どうすればいいか。   allデータ    -B データ        =Aデータ (原データすべて)-(抽出されたデータ):(抽出されなかったデータ)            抽出条件を満たすデータ : 抽出条件を満たさないデータ             条件設定簡単   : 条件設定複雑             特に必要としない : 本当に見たいデータ

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.7

#5のお礼に関して。 例データ Sheet2に!!! A列 B列 a b c s J d f コード Sub goo() d = Range("A65536").End(xlUp).Row j = 1 For i = 1 To d igai = "n" Select Case Cells(i, "A") Case "a" Case "b" Case "c" Case Else igai = "y" End Select '--- If igai = "y" Then Select Case Cells(i, "B") Case "J" Case Else Worksheets("Sheet3").Cells(j, "A") = Cells(i, "A") Worksheets("Sheet3").Cells(j, "B") = Cells(i, "B") j = j + 1 End Select End If '--- Next i End Sub 結果Sheet3に!!! d f

taktta
質問者

お礼

全て解決しました。ありがとうございました。 まだ上記の回答を見ずにご返事することを許してください。(見直します) 私が最終的に、やりたかったことは2つの列に関して条件を満たさないデータを選出することで、下記のようなイメージの処理でした。 Sub goo() d = Range("A65536").End(xlUp).Row j = 1 For i = 1 To d Select Case Cells(i, "A") Case "a" Select Case Cells(i, "B") Case "J" Case Else Call goo2(i, j) End Select Case "b" Select Case Cells(i, "B") Case "J" Case Else Call goo2(i, j) End Select Case "c" Select Case Cells(i, "B") Case "J" Case Else Call goo2(i, j) End Select '---XXX Case Else Call goo2(i, j) '列や行やシートが変わっても、類推で変えられるでしょう。 '---YYY End Select Next i 'XXXの前の行に、除くコードを付け加える。 'YYYの前の行に、付け加える列を付け加える。 End Sub Sub goo2(i, j) Worksheets("Sheet2").Cells(j, "A") = Cells(i, "A") Worksheets("Sheet2").Cells(j, "B") = Cells(i, "B") Worksheets("Sheet2").Cells(j, "C") = Cells(i, "C") j = j + 1 End Sub

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (7)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.8

#7のお礼について (1)Select Case XXX と EndSelect は対になっているべし。 (2)注目点(今の場合セル) を返るときは、一旦End Selectをいれ 新しく Select Case YYY と EndSelect で指定すること。 #7お礼はメチャめちゃになっている。 (3)Case Else の次行以下へ 適当なとことへ処理(今回は別シートに書き出し)をうまく入れること。#7の私の回答をよく見てください。

全文を見る
すると、全ての回答が全文表示されます。
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.6

#5です。補足に関して。補足質問の回答を上げたつもりです。テストしていただけましたか。コードだけでも判るのですが。 Case "a" Case "b" Case "c" とありますが、その(a,b,cの)場合(ケース、Case)には次のCase行までには、何も処理が書いてないので、処理をせず End Select の次ぎ、すなわち次行の処理に行きます。 だから抜き出さないものを、Case "c" のあとにCase XXXとして入れて増やせばよいのです。 「XXXの前の行に、除くコードを付け加える。」と書いたのはそのことです。

全文を見る
すると、全ての回答が全文表示されます。
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.5

こういうのは、簡単な下記のコードを改変すれば簡単。 Sub test01() d = Range("A65536").End(xlUp).Row j = 1 For i = 1 To d Select Case Cells(i, "a") Case "a" Case "b" Case "c" '---XXX Case Else Worksheets("Sheet2").Cells(j, "A") = Cells(i, "A") Worksheets("Sheet2").Cells(j, "B") = Cells(i, "b") 列や行やシートが変わっても、類推で変えられるでしょう。 '---YYY j = j + 1 End Select Next i End Sub XXXの前の行に、除くコードを付け加える。 YYYの前の行に、付け加える列を付け加える。

taktta
質問者

お礼

回答すばらしいです。一応解決しました.どうもありがとうございました。 ところで補足の続きですが、下記のようにしたらぜんぜん動きません。どこがまずいでしょうか。ずぶの素人なのですいません。 Sub goo() d = Range("A65536").End(xlUp).Row j = 1 For i = 1 To d Select Case Cells(i, "A") Case "a" Case "b" Case "c" Select Case Cells(i, "B") Case "J" Case Else Worksheets("Sheet2").Cells(j, "A") = Cells(i, "A") Worksheets("Sheet2").Cells(j, "B") = Cells(i, "B") End Select '---XXX Case Else Worksheets("Sheet2").Cells(j, "A") = Cells(i, "A") Worksheets("Sheet2").Cells(j, "B") = Cells(i, "b") '列や行やシートが変わっても、類推で変えられるでしょう。 '---YYY j = j + 1 End Select Next i 'XXXの前の行に、除くコードを付け加える。 'YYYの前の行に、付け加える列を付け加える。 End Sub

taktta
質問者

補足

J部門のa、b、c、以外のユーザをsheet2に選出するとかの場合のコードはどうなるのでしょうか。 ユーザ名、 部門 a  、J部門 b  、J部門 c  、J部門 d  、K部門 c  、K部門 

全文を見る
すると、全ての回答が全文表示されます。
回答No.4

takttaさんの試したとおりにやってみました。 うまく出来たような気がするのですが・・・ 条件 「Aさん以外」かつ「Bさん以外」かつ「Cさん以外」 として、抽出するのでいいのでしょうか?   | A | B | C  (1) 1 |名前|名前|名前  2 |<>A |<>B |<>C  3 |  |  | (2) 4 |日付|名前|  5 |2/14|A  |  6 |2/14|B  |  7 |2/14|C  |  8 |2/14|D  |  9 |2/14|A  |  10|2/14|B  |  11|2/14|C  |  12|2/14|D  | (1):検索条件範囲 A2:C2 (2):リスト範囲  A4:B12 として、フィルタオプションを実行したら、 8、12行目のDさんが抽出されました。 検索条件には、 ・検索条件のフィールド名をリストのフィールド名は  一致させる ・検索条件範囲には、フィールド名と条件を含める ・同一フィールドで複数の条件を記載する場合は、  条件の数分フィールド名を追加する ・前方一致、後方一致などの条件では、  ワイルドカードを使用する リストには、 ・フィールド名はレコードと違う書式を設定する ・フィールドは基本的に書式を統一する などにポイントがあるみたいです。 長文になってしまいました。うまくいくといいですね。

taktta
質問者

お礼

懇切ていねいなご回答ありがとうございました。 どうも半角、全角の微妙な違いがあってだめだったようで、データを入れ直したらうまくいきました。

全文を見る
すると、全ての回答が全文表示されます。
noname#204879
noname#204879
回答No.3

[No.2回答に対する補足]に対するコメント、 元データの項目名「ユーザ名」のセルが A1 でセル A2 以降に該当データがあると仮定します。 Aさん以外の人を見たいときの条件範囲の記述は ユーザ名 ="<>Aさん" としますよね。多分ご存じないと思いますが、「="<>Aさん"」を「=A2<>"Aさん"」に書き替え、かつ、その上の「ユーザ名」を空白にしても同じ結果を得ます。条件範囲はその空白セルも含めるのがコツです。私の言うことが本当かどうか、先ずは試してみてください。上手く行ったら次を読んでください。 今度は「=A2<>"Aさん"」を「=AND(A2<>"Aさん",A2<>"Bさん",A2<>"Cさん")」に書き替えて、[フィルタオプションの設定]を実行してみてください。どうでしたか?

taktta
質問者

お礼

非常に有益なコメントありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。
  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.2

1項目での複数条件の設定ですか? or条件なら(項目名の列の内容が1 or 2 or 3) 項目名 1 2 3 AND条件なら(項目名の列の内容が1~3) 項目名 項目名 =">=1" ="<=3"

taktta
質問者

お礼

回答どうもありがとうございました。これだと条件のものが選ばれると思います。

taktta
質問者

補足

例えば、ログデータなどを解析する場合に許されたユーザ以外の使用のログがあるかないかを見たいので、Aさん,Bさん,Cさん以外の人を見たいのです。その場合 ユーザ名   ユーザ名  ユーザ名 ="<>Aさん"  ="<>Bさん"   ="<>Cさん" というようにしますよね。でもやってみたらうまくいかなかった。

全文を見る
すると、全ての回答が全文表示されます。
  • usami33
  • ベストアンサー率36% (808/2210)
回答No.1

私が良くやるのは、テンポラリの列を儲け、抽出したデータの欄に1を入れて、次回からはテンポラリの列で、1でないものを抽出してます。 複雑な抽出条件の場合、これを1,2,3と複数入力しておくと、次回から楽になります

taktta
質問者

お礼

参考にします。どうもありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Excel フィルターオプションの設定について

    Excel2010を使っています。 データ表からデータを抽出するのにフィルターの「フィルターオプション」を使っています。 データ範囲の外側に抽出条件を入力するのですが、数値の範囲の条件の記述方法がわかりません。 条件に「>=50」や「<=200」は正常に抽出するのですが、50から200の範囲のデータを抽出するのに条件の書き方がわかりません。 「>=50」と「<=200」の2つを条件にするとすべてのデータが抽出されます。 教えてください。 宜しくお願いします。

  • EXCELのフィルタオプションで

    EXCELでフィルタオプション(AdvancedFilter)を使ったデータの抽出がしたいのですが、 空白以外のセルを抽出するには、検索条件範囲に何と書き込めばいいのでしょうか? オートフィルタのように「<>」と書き込んでもだめでした。(空白セル「=」は出来たのに) お願いします。

  • Excelのフィルタオプションについて

    いつもお世話になります。 Excel2010 Windows7で作業をしています。 1000行、10列程度のデータからフィルタオプションを利用し、条件を2つ設定してデータを抽出しています。 抽出は同一シートで行っています。 抽出自体は問題なく行えるのですが、抽出した行から下のセルが空白になってしまいます。セルが挿入されているような気配はなく、空白のセルで上書きされているような雰囲気です。 抽出したデータをさらに参照して、他のセルに代入する、などの操作もしているので、できれば抽出する行の下にも計算式などを入力したいのですが、これは操作が悪いのでしょうか。それとも仕様なのでしょうか。 参照しているデータには特に空白セルはありません。 条件については唯一のものではなく、同じ値のものが複数存在しますが、2つの条件を設定することで唯一のデータを選択することができます。 抽出したいのは1行です。 よろしくご教授ください。

  • EXCELのオートフィルタオプション

    オートフィルタオプションを使って表の中からデータを抽出するように設定したいと思っています。 抽出条件で日付を選択したいのですが、「と等しい」に設定するとデータが抽出されますが、「以上」や「より大きい」などを設定するとデータが抽出されません。 ○月○日から△月△日までの期間から抽出、というような設定をしたいのですが、どのようにしたらよいのでしょうか?ぜひ教えてください、お願いします。

  • エクセル(フィルタオプションの設定について教えてください!!!)

    現在エクセルを教科書片手に勉強中です。 オートフィルタ・オプションを利用して、2つの検索条件で抽出をしたいのですが一向に抽出先のリストから抜き出されません。 教科書の手順通りやっているつもりですが全くダメです。 フィルタオプションの設定で ●抽出先→「指定した範囲」を選択 ●リスト範囲→対象リストの範囲を設定 ●検索条件範囲→作成済の検索条件のリストの範囲を設定 ●抽出範囲→作成済の抽出先リストの範囲を設定            ↓ OK ボタンをクリック と、言う様な具合でやってますが どこかいけないのか分かりますでしょうか。 もしくは原因が何なのか分かる方いたら教えてください!!!!!

  • エクセルのフィルターのオプションに関する質問

    例えば、エクセルのデータ件数(エクセルの行数)が100件あり、A列にA,B,C,D,E,F,Gというデータが100件のデータの中に任意に存在するとします。 A列が、CもしくはFのデータのみ抽出したい場合、フィルターのオートフィルターオプションで”Cと等しい” ”Fと等しい” という2つの条件をORで設定することによってできます。(ORで設定できるのは2つの条件まで) A列が、AもしくはCもしくはFの3つのデータのみ抽出したい場合、何かいい方法はあるでしょうか? よろしくお願いします。

  • エクセル フィルタオプションで 特定の文字列を含む行を全て抽出する方法がわかりません

    エクセル2002を使用しています。 エクセルフィルタオプション設定で、特定の文字列を含む行を全て抽出する方法がわかりません。 たとえば sheet1    A    B    C    1 項目1 項目2 項目3  2  あ   い    う    3  う        あ    4  え        い 5      う       Sheet2   A         B         1 抽出文字列 2 あ  3   4 (計算式) 5 (以下抽出結果)   上記のようなデータがあり、sheet2!a5以降に「あ」が該当する行を全て抽出するといった式を組みたいのですが、 Sheet2 a2に抽出文字を入力し、a4に「=or(sheet1!a2=a2,sheet1!=a2,sheet1!=a2)」といった検索条件式を組み、フィルタオプションで、 ・リスト範囲 Sheet1!$a$1:$c$5 ・検索条件範囲 $a$3:$a$4 ・抽出範囲 $a$5  と指定するのですが、うまく抽出できません。 ちなみに抽出対象が文字列でなく数字なら(たとえばSheet1のデータの文字をあ→1 い→2のように全て数字に置き換えてSheet2!a2に1を入力)抽出できるのですが・・・ 文字列をセル参照して条件式を組む場合に何か気をつけることがあるのでしょうか?文章が長くなってしまい申し訳ありません。良い方法があればご教授お願いします。

  • Excel-フィルタオプション-<>が使えない

    EXCELで例えば下記のようなデータがあるとします。 A1234 B1234 C1234 D1234 E1234 … 頭にABCが付くデータ以外のデータが抽出したいので、検索条件範囲に <>A* <>B* <>C* の範囲を設定してみたのですが、 さっぱり抽出できませんでした。 なにか問題があるのでしょうか。 また、他に方法があれば教えてください。

  • EXCELのフィルタオプションについて

    EXCELのフィルタオプションについて質問です。 EXCELのフィルタオプション機能で指定した条件に基づくDATAを抽出することが出来ますが、 その逆で指定した条件に基づくDATAだけを抜き取ることは出来ないのでしょうか? 会社で使用している膨大なDATAベースに余計な情報が混ざっているので、 それを取り除きたいんです。 必要な分を条件指定して抜き出すとしたら膨大な条件を入力しなければならないので。。。 例えば、 大学生 山田 高校生 鈴木 小学生 木村 大学生 大野 というDATAから大学生を条件に指定して 大学生 山田 大学生 大野 は出来るのですが、 今回やりたいのは小学生を条件に指定して 大学生 山田 高校生 鈴木 大学生 大野 と小学生を抜いたDATA表を作りたいのです。 出来るでしょうか? ご存じの方がいらっしゃいましたらアドバイスいただければ幸いです。

  • エクセル フィルタオプション

    エクセルのフィルタオプションで指定した範囲でを選択し抽出すると下の行に入れていた文字が消えてしまいます。消えないように抽出する方法を教えていただけませんか?よろしくお願いします。

専門家に質問してみよう