• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Excel VBA フィルタオプションについて)

Excel VBA フィルタオプションで結果のデータを取り込む方法

このQ&Aのポイント
  • Excel VBAでフィルタオプションを使用して結果を表示する際に、抽出されたデータだけを取り込む方法について教えてください。
  • フィルタオプションで抽出されたデータに対して処理を行いたい場合、一般的にフィルタを解除しないと選択できないセルデータを取得してしまいます。そのため、フィルタオプションで抽出されたデータのみを取り込む方法が知りたいです。
  • 具体的な例として、タイトル行として1行目があり、2行目からのデータをフィルタオプションで抽出した場合、フィルタされたデータのみを取り込む方法を教えてください。

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.1

sub macro1()  dim r as long  dim h as range ’一個も抽出されなかった場合に注意  r = range("A65536").end(xlup).row  if r = 1 then   msgbox "no match data"   exit sub  end if ’可視セルを取得する  for each h in range("A2:A" & r).specialcells(xlcelltypevisible)   msgbox h.address  next end sub などのように。

その他の回答 (1)

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

基本的には、「フィルタ」は条件に合わないセル行を非表示にするもので、データは、シートに残っている。そうでなければ困る場合が多い。 (1)可視セルをとらえるコードにする (2)別セル範囲に結果を出す(フィルタオプションの設定で) 同じシートの別セル範囲に結果を出せば良いようです。 これはフィルターフィルタオプションの設定の仕組みを使ってます。 フィルタの▼クリックで現れる「オプション」ではない。 ーー マクロの記録を採って多少付け加えただけのもの。 Sub Macro4() Range("A1:A7").Select Range("A1:A7").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range( _ "E1:E2"), CopyToRange:=Range("H1:H8"), Unique:=False d = Range("H100").End(xlUp).Row MsgBox d For i = 2 To d MsgBox Cells(i, "H") Next i End Sub ("H100").は適当に実情にあわせて。 ーー 別シートに結果を出したい場合は、その別シートを開いて、操作を始め、データ範囲や条件セル範囲は別シートのセル範囲指定になります(します)。 抽出範囲を別シート指定の形式にすると、不可になるでしょう。 見出し 見出し 見出し 1 >=3 3 2 4 3 5 4 6 5 6 この場合は行番号は「飛んで表示されない」ことからも判りますが、シートの行を非表示にするものではない。

関連するQ&A

専門家に質問してみよう