Excel VBA質問箱 IV

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

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


27774 / 76736 ←次へ | 前へ→

【54279】Re:フィルタオプション
回答  Hirofumi  - 08/3/2(日) 20:48 -

引用なし
パスワード
   >条件範囲を指定(「氏名」、「機関」、「科目」の3列)を
>変更する時と
>
>抽出範囲を変更する時はどのようにしたらよろしいのでしょうか?


変更する部分は、

  '◆抽出範囲を指定
  Set rngExtract = Worksheets("Sheet1") _
      .Cells(5, "B").Resize(, clngColumns)
  '◆条件範囲を指定(「氏名」、「機関」、「科目」の3列)
  Set rngCriteria = rngList.Parent.Cells(1, "B").Resize(2, 3)
  

の2行です
詳しくは、Helpのフィルタオプション(AdvancedFilter)を見れば解ると思いますが?

「抽出範囲」は、抽出させるSheetの抽出させる列の列見出しの範囲を言います
詰まり、現状のコードでは、B5:H5の範囲と成っています
AdvancedFilterでは、必ず全ての列を元のListと同じ順番で抽出させる必要は無いので
例えば、Sheet2のD6:F6に、「氏名」、「日付」、「症状」を抽出したい場合

Sheet2を
   D   E   F
06  氏名  日付  症状

として、コードを

  '◆抽出範囲を指定
  Set rngExtract = Worksheets("Sheet2") _
      .Cells(6, "D").Resize(, 3)

とします
また、「条件範囲」も必要な列見出しとその下の条件だけを指定すれば良く
例として、Sheet2のE、F、G、H列の5行目に「氏名」、「機関」、「症状」、「科目」
を抽出条件として置くならば

Sheet2を
   E   F   G   H
05  氏名  機関  症状  科目
06  ="=加藤" *   *   *

と設定して

  '◆条件範囲を指定(「氏名」、「機関」、「症状」、「科目」の2行4列)
  Set rngCriteria = Worksheets("Sheet2").Cells(5, "E").Resize(2, 4)

とします
尚、解ると思いますが、.Resizeとは、その前の範囲を変更するRangeのプロパティです
詳しくはHelpを見て下さい

また、Upしたコードの「rngList.Parent」とは、
rngListの親(詰まり、レンジの親なのでSheet)を指します
今回の場合、rngListは、抽出元の先頭列見出しなので、
その親は、WorkSheets("リスト")と成ります

0 hits

【54270】フィルタオプション ウィル 08/3/2(日) 17:20 質問
【54272】Re:フィルタオプション かみちゃん 08/3/2(日) 17:29 発言
【54275】Re:フィルタオプション ウィル 08/3/2(日) 17:59 回答
【54277】Re:フィルタオプション Hirofumi 08/3/2(日) 19:10 回答
【54278】Re:フィルタオプション ウィル 08/3/2(日) 20:07 回答
【54279】Re:フィルタオプション Hirofumi 08/3/2(日) 20:48 回答
【54281】Re:フィルタオプション ウィル 08/3/2(日) 21:56 お礼

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