Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


5009 / 13646 ツリー ←次へ | 前へ→

【53118】1項目で複数条件のデーター抽出 07/12/16(日) 10:39 質問[未読]
【53119】Re:1項目で複数条件のデーター抽出 かみちゃん 07/12/16(日) 10:47 発言[未読]
【53124】Re:1項目で複数条件のデーター抽出 07/12/16(日) 12:23 お礼[未読]
【53120】Re:1項目で複数条件のデーター抽出 Who Me? 07/12/16(日) 10:56 回答[未読]
【53123】Re:1項目で複数条件のデーター抽出 07/12/16(日) 12:20 発言[未読]
【53127】Re:1項目で複数条件のデーター抽出 Who Me? 07/12/16(日) 13:57 発言[未読]
【53128】Re:1項目で複数条件のデーター抽出 07/12/16(日) 14:59 お礼[未読]
【53122】Re:1項目で複数条件のデーター抽出 ponpon 07/12/16(日) 11:50 発言[未読]
【53125】Re:1項目で複数条件のデーター抽出 07/12/16(日) 12:47 お礼[未読]

【53118】1項目で複数条件のデーター抽出
質問    - 07/12/16(日) 10:39 -

引用なし
パスワード
   度々すいません。データーの抽出方法を教えてください。
オートフィルターで1項目の中の、3種類のデーター抽出することはできるのでしょうか?

一覧表のB列にA〜Jまでのいづれかが入力されており、A、C、Eだけを抽出したい。
   Range("A1").AutoFilter 2, "A", xlOr, "C", xlOr, "E"
と、やってみたら「コンパイルエラー、引数の数が一致しません」と出ました。

現在「A or B」と「C」の2回に分けて抽出、コピペ処理していますが、1回で抽出処理したいと思っています。
よくある質問かなと思い検索してみましたが、複数項目での抽出は多数ありましたが「1項目で複数条件」が見当たりませんでした。
よろしくお願います。

【53119】Re:1項目で複数条件のデーター抽出
発言  かみちゃん  - 07/12/16(日) 10:47 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>オートフィルターで1項目の中の、3種類のデーター抽出することはできるのでしょうか?

Excel2003までの機能しか知りませんが、
オートフィルタで3つ以上の条件を抽出することはできないと思います。
詳しくは、勉強中なので話せませんが、フィルタオプションの設定が使えるかもしれません。
ただ、私なら、作業列に数式を設定して、抽出しますけど、見当違いすもしれません。

【53120】Re:1項目で複数条件のデーター抽出
回答  Who Me?  - 07/12/16(日) 10:56 -

引用なし
パスワード
   フィルターの代わりに、数式で判定する方法。

Rows.Hidden = False
With Range("B2", Range("B65536").End(xlUp)).Offset(, 254)
  .Formula = "=IF(OR($B2=""A"",$B2=""C"",$B2=""E""),1,""No"")"
  IF WorksheetFunction.Count(.Cells) = 0 Then
   MsgBox "検索値は見つかりませんでした", 64
  Else
   On Error Resume Next
   .SpecialCells(3, 2).EntireRow.Hidden = True
  End If
  .ClearContents
End With 

【53122】Re:1項目で複数条件のデーター抽出
発言  ponpon  - 07/12/16(日) 11:50 -

引用なし
パスワード
   AdvancedFilterで抽出する例です。
データがシート1にあるとして、
Z列を作業列に使います。
項目数は6あると仮定しています。
シート2に書き出します。

Sub test()
  Application.ScreenUpdating = False
  With Sheets("Sheet1")
    '抽出する項目名と抽出文字をセット
    .Range("Z1:Z4").Value = Application.Transpose(Array(.Range("B1").Value, "A", "C", "E"))
    
    .Range("A1").CurrentRegion.AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _
      .Range("Z1", .Range("Z65536").End(xlUp)), Unique:=False
    .Range("A2", .Range("A65536").End(xlUp)).Resize(, 6).Copy Sheets("Sheet2").Range("A1")                              '↑項目数
    .ShowAllData
    .Range("Z:Z").ClearContents
  End With
  Application.ScreenUpdating = True
End Sub

【53123】Re:1項目で複数条件のデーター抽出
発言    - 07/12/16(日) 12:20 -

引用なし
パスワード
   ▼Who Me? さん:ありがとうございました。解決です。

>フィルターの代わりに、数式で判定する方法。
思いつきませんでした。

1点教えていただきたいんですが

>   MsgBox "検索値は見つかりませんでした", 64

の 64 て何ですか?特に無くともとは思ったんですが、働きを教えていただけますか。
問題解決した上での再質問は生意気かな?とは思ったんですが
宜しくお願いします。

【53124】Re:1項目で複数条件のデーター抽出
お礼    - 07/12/16(日) 12:23 -

引用なし
パスワード
   ▼かみちゃん さん:ありがとうございます。

>ただ、私なら、作業列に数式を設定して、抽出しますけど、見当違いすもしれません。
Who Me? さんの方法ですね。思いつきませんでした。

問題解決しました。ありがとうございます。

【53125】Re:1項目で複数条件のデーター抽出
お礼    - 07/12/16(日) 12:47 -

引用なし
パスワード
   ▼ponpon さん:ありがとうございます。
Who Me?さんに教わったコードを試している間にPonponさんの回答を頂きました。

初心者の私にも分り易い方法でした。
今回は、Who Me?さんの方法を使わせて頂きます。

勿論、ponponさんのコードも私にとっては貴重な教科書です。
今後とも宜しくお願いします。

話は別ですが、先日「石鹸箱」のponponさんの投稿読まさせて頂きました。
感銘しました。

【53127】Re:1項目で複数条件のデーター抽出
発言  Who Me?  - 07/12/16(日) 13:57 -

引用なし
パスワード
   MsgBox関数では、表示するボタンとアイコンの種類を
引数 Buttons に定数を渡して決めます。
その定数の書き方は、文字型と数値型を選ぶことが出来ます。
つまり数値型で 64 とした場合、文字定数の vbInformation
と等価になるのです。どちらが使いやすいかは個人の感覚に
よると思いますが。

【53128】Re:1項目で複数条件のデーター抽出
お礼    - 07/12/16(日) 14:59 -

引用なし
パスワード
   ▼Who Me? さん:
解説ありがとうございました。

本で分らない時や、暇な時はここの掲示板で勉強させて頂いています。
今後とも宜しくお願いします。

5009 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free