お世話になります。現在ExcelVBAでフィルタオプションを使用したプログラム製作を行っています。
検索条件を入力し実行ボタンを押すと、そのDB上で検索条件で指定されたものがフィルタオプションの機能を利用し表示されるようになりました。
今、新機能の実装するためフィルタオプションで抽出された結果のデータに対してのみ処理を行いたいのですが、
抽出レコードのデータを取り込もうにもDo LoopやOffset等でセルデータを取り込もうとすると
どうしても一般的にフィルタオプションを解除していないと選択できないようなセルデータを取得しているようです。
例えば
1行目がタイトル行として
2行目から
1
2
3
4
5
6
とある場合にフィルタオプションで3以上のデータをフィルタさせると結果は
タイトル
3
4
5
6
となりますが、この時この結果3,4,5,6をデータとして取り込みたいので
A1からDo LoopでOffset(0,1)しながらデータを取り込むと
結果1~6までのデータが全て取れてしまいます。
この状況を何とか打破すべくお力添えをいただけませんでしょうか?
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
などのように。
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>=33
24
35
46
5
6
この場合は行番号は「飛んで表示されない」ことからも判りますが、シートの行を非表示にするものではない。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルVBAコピー 2 2022/06/08 21:45
- Excel(エクセル) Excel Powerクエリーの質問、行数指定は可能でしょうか? 2 2022/08/22 12:54
- Visual Basic(VBA) エクセルのマクロで対象ごとにシート分けしてその内容をセルに書き込みたい 9 2022/08/24 13:23
- Excel(エクセル) Excel(エクセル)でフィルター抽出後、非表示の行を計算しないで、合計を算出する方法 【内容】 添 4 2023/01/30 17:17
- Visual Basic(VBA) 列と行の名前(重複あり)が交差するセルに、データを入力したい 2 2022/06/25 22:42
- Excel(エクセル) エクセルでフィルタ後、考えている場所に値コピーができない。 1 2022/05/02 21:01
- Excel(エクセル) Excel フィルタ後のコピー貼付けと可視セルの関係について 3 2023/02/07 16:42
- Visual Basic(VBA) 列と行の名前(重複あり)が交差するセルに、データを入力したい 3 2022/06/12 11:17
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Excel(エクセル) エクセルVBA オートフィルタでの絞り込みと並び替えについて 1 2023/07/08 13:08
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルオートフィルタで余計...
-
エクセルで、桁数の異なるデー...
-
色フィルターをかけた状態で、...
-
エクセルで特定の範囲内から小...
-
エクセルのフィルタをかけると...
-
Excelでオートフィルタ時に交互...
-
エクセルの計算表の下向き三角...
-
グーグルスプレッドシート 連番...
-
エクセルで作成 混合名簿から...
-
Excel関数、何がいけないのかわ...
-
excelで奇数の行のみ削除したい
-
オートフィルタの使用にチェッ...
-
エクセルを使用してデジタルフ...
-
EXCELのグループ化
-
オートフィルタで抽出したデー...
-
Excel2010 フィルタで抽出できない
-
EXCELで顧客情報抽出したい
-
【Excel】 可視セルへの貼り付...
-
指定した項目名で抽出したデー...
-
オートフィルタをかけた表に一...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルオートフィルタで余計...
-
エクセルで、桁数の異なるデー...
-
色フィルターをかけた状態で、...
-
Excel関数、何がいけないのかわ...
-
エクセルのフィルタをかけると...
-
教えて下さい!関数SUBTOTALとC...
-
オートフィルタで抽出したデー...
-
エクセルの計算表の下向き三角...
-
エクセルで特定の範囲内から小...
-
【Excel】 可視セルへの貼り付...
-
エクセルでのオートフィルタオ...
-
行番号の文字の色が青色の理由?
-
エクセル:色の付いたデータを...
-
Excelでオートフィルタ時に交互...
-
エクセルを使用してデジタルフ...
-
オートフィルタをかけた表に一...
-
=SUBTOTAL に =COUNTIF の機能...
-
excelで奇数の行のみ削除したい
-
Excel2010 フィルタで抽出できない
-
5の倍数の日付だけを抽出したい
おすすめ情報