- ベストアンサー
EXCELのVBA-フィルタ抽出後のセル選択方法
EXCELのVBAです。 オートフィルタ(Autofilter)で、何らかの条件で抽出をかけた後の部分で、 特定のセル、例えば、2列目の上から5番目のセル、を選択するには、 どうすれば良いでしょう? 言い方を変えれば、可視セルの中だけで、何列目で何行目セルという指定 をするにはどうすれば良いかと。 RangeとかSelectionで、指定する方法が有るのでしょうか? よろしくお願いいたします。
- tsumuji
- お礼率90% (119/132)
- Visual Basic
- 回答数4
- ありがとう数1
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
回答1~3をした者です。 私が訂正したところが直っていれば正しく走ると思うのですが。 (win7pro32bit, xl2003で確認) Sub test() Dim c As Range Dim i As Integer For Each c In ActiveSheet.Columns(2).SpecialCells(xlCellTypeVisible) i = i + 1 If i = 6 Then '←1行目はヘッダー行なので c.Select Exit Sub End If Next End Sub
その他の回答 (3)
- jin34
- ベストアンサー率80% (17/21)
Next c じゃなくて Next でしたね。 たびたびすみません。 実際にマクロを走らせてみていないので。。。
補足
jin34様 お忙しい中をすみません。 実際にマクロを走らせてみましたが、 どうも、 フィルタ抽出された可視セルのなかでの上から5番目 ではなくて 全部のセル(可視・不可視 含めて)のなかでの上から5番目 を 選んでしまうようです。 残念ながら・・・。
- jin34
- ベストアンサー率80% (17/21)
すみません。訂正です。 Cells(i, 2).Select ではなく c.Select です。
- jin34
- ベストアンサー率80% (17/21)
「VBA Autofilter 可視セル」で検索しました。 下のリンク先を参照してください。 2列目の上から5番目のセルを選択するなら Dim c As Range Dim i As Integer For Each c In Worksheets("Sheet1").Columns(2).SpecialCells(xlCellTypeVisible) i = i + 1 If i = 5 Then Cells(i, 2).Select Exit Sub End If Next c
関連するQ&A
- VBAでオートフィルタの可視セルクリア後空白行削除がうまくできません
VBA初心者です。 オートフィルターで抽出した行を削除したくて、以下のように書いたのですが、最後の一文でエラーになってしまいます。 ◆エラー内容◆ 実行時エラー1004 重複する選択範囲に対してそのコマンドを使用することはできません。 ◆書いたVBA◆ Range("A2").Select Selection.AutoFilter Field:=1, Criteria1:="=1111", Operator:=xlAnd 'オートフィルターで「1111」を抽出 Dim r As Range Set r = Range(Range("A3"), Range("A" & Rows.Count).End(xlUp)).SpecialCells(xlCellTypeVisible) r.ClearContents 'A列の可視セルの値をクリア Range("A2").Select Selection.AutoFilter 'オートフィルターの解除 r.SpecialCells(xlCellTypeBlanks).EntireRow.Delete 'A列が空白の行は削除→ ココがエラーになります --------------------------------------------------------- 元のファイル構成は2行目に項目名で、3行目からデータが入っています。 いろいろ調べたのですが、よくわからなかったので教えていただければ 幸いです。 宜しくお願いします。
- 締切済み
- Visual Basic
- VBA 表の1つ下のセルを選択する
EXCEL2003のVBAを使っています。 オートフィルタで抽出させた表があります。 入力されているセルの、1つ下のセルを選択するにはどうしたら良いでしょうか。 A 1 あああ 2 あああ 5 あああ 1行目から19行目までの列の中で、"あああ"だけをオートフィルタで抽出している 10 あああ 14 あああ 16 あああ 20 ※ ←ここを選択したい。 Range("A65536").Select Selection.End(xlUp).Select ActiveCell.Offset(1, 0).Select これだとA17のセルが選択されてしまいます。 表全体の1つ下のセルを選択する方法はあるでしょうか?
- ベストアンサー
- オフィス系ソフト
- VBAでオートフィルタを使った抽出がうまくいきませんのでどなたか教えて
VBAでオートフィルタを使った抽出がうまくいきませんのでどなたか教えてください。 A列、C列に日付が入っていて、A列は空白以外のセルを表示し、かつC列は、開始日、終了日で抽出したいのですが、うまくいきません。 With Worksheets("sheet").Activate 開始日 = ">=" & TextBox1.Text 終了日 = "<=" & TextBox2.Text .Range("A1:N200").AutoFilter Field:=1, Criteria1:="<>" .Range("A1:N200").AutoFilter Field:=3, _ Criteria1:=開始日, Operator:=xlAnd, _ Criteria2:=終了日
- ベストアンサー
- その他MS Office製品
- エクセルVBAで5行目からオートフィルタモードに設定したいたい
抽出項目が5行目にあり、オートフィルタを5行目から表示させたいのですが、うまくいきません。 Macro1では項目が消えてしまい、▼が1行目に、Macro2では項目は残りますが、▼は同じく1行目になってしまいます。どうしたら5行目にオートシェイプの▼が配置できるでしょうか? Sub Macro1() Range("A5").Select Selection.AutoFilter End Sub Sub Macro2() Range("A5").AutoFilter End Sub
- ベストアンサー
- オフィス系ソフト
- Excel VBAでオートフィルターを使って他の列を空白に
Excel VBAでオートフィルターを使ってAF列(32列)が空白ならBN列(66列)を空白する為、以下を作成したのですが、AF列(32列)に空白がない場合はBN列(66列)全て空白になってしまうのですが、どのようにしたら良いのでしょうか? 毎月300~500行になる為、オートフィルターを使用した方が処理が早いと思いしたのですが... '-------オートフィルター後、該当データーのみ範囲指定する--------- 'オートフイルターの条件を入れる列の番号(32)に条件("空白") Selection.AutoFilter Field:=32, Criteria1:="" Selection.CurrentRegion.Select 'アクティブセル領域を選択する Selection.Offset(1, 0).Select '選択領域を1行下へ移動する Selection.Resize(Selection.Rows.Count - 1).Select '選択領域を1行減らす(見出し行) Selection.Offset(0, 65).Select '選択領域の左端のをBM列にする Selection.Resize(, 1).Select '選択領域を1列右にする Selection.ClearContents '該当データーのみ空白にする Selection.AutoFilter Field:=32 'フィルターオプション解除
- 締切済み
- オフィス系ソフト
- EXCElセルの値でフィルター抽出したい
windows10,microsoft365使用の超初心者です。 Sub セルの値でオートフィルターで抽出しその行を削除したい() Range("D8").AutoFilter Field:=6, Criteria1:=Range("F4").Value, Operator:=xlAnd End Sub このコードでやっても、うまく抽出してくれません。 どうして出来ないのかわかりません。ご教示よろしくお願いいたします。 セルF4は、表示は「6月20日」数値は44002です。 セルD8は、表示は「令和2年6月分」で数値は44002です。
- ベストアンサー
- Visual Basic
- エクセルVBAでフィルタ抽出部分のみのコピー
エクセルVBAで売上帳を作成していますが、オートフィルタでデータ抽出した後、表示されている行のみをコピーして別シートに貼りつけるにはどうすればよいのでしょう? 別シートは指定したセルに値のみの貼り付けをしたいと思っています。 宜しくお願いします。
- ベストアンサー
- オフィス系ソフト
- 可視セルの削除
オートフィルタで抽出したデータを行ごと削除するのですが、 可視セルで検索をすると、1列目の見出し行も含まれてしまいます。 1列目を除くには、どのように記述したらいいのでしょうか? Selection.AutoFilter Selection.AutoFilter Field:=5, Criteria1:="=" Selection.SpecialCells(xlCellTypeVisible).Select ↑これで、今、削除したい部分、プラス見出し行が選択されています。
- ベストアンサー
- その他(ソフトウェア)
- Excel VBA セル値の配列代入について
Excel VBAで、セルの値を配列に代入する処理を、よくやります。 arr=Range("$A1:$C1000").value とかですね。これに関して、オートフィルタで絞り込んだ結果の可視セルだけを、配列に代入するということは、やっぱり出来ないのでしょうか。
- ベストアンサー
- Excel(エクセル)
- オートフィルタからの選択部分のみからの抽出
オートフィルタからある特定項目のみ表示して、その特定項目からのみデータを抽出したいのですがうまくいきません。 シートAAAAにある定常にオートフィルタをかけその定常部分のみから A1:B1の内容を抽出してセルBBBBにはり付けしたいという内容です。 Sheets("AAAA").Select With Worksheets("AAAA") .Range("B5").AutoFilter _ Field:=12, Criteria1:="定常" End With Sheets("BBBB").Select Sheets("AAAA").Range("B5:O15000").AdvancedFilter Action:=xlFilterCopy, _ CriteriaRange:=Range("A1:B2"), CopyToRange:=Range("B7"), Unique:=True Range("B7").Select Selection.Sort Key1:=Range("B7"), Order1:=xlAscending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _ :=xlPinYin 宜しくお願いします。
- ベストアンサー
- Visual Basic
お礼
どうもです。 助かりました。お陰様で解決いたしました。 for each ~ next 文でループさせる点とか、すごく参考になりました。 上記のプロシージャに、以下のように、 一か所ちょっとだけ付け加えさせていただくことでなんとかなりました。 ActiveSheet.Columns(2).SpecialCells(xlCellTypeVisible) ↓(改) ActiveSheet.Range("A1").CurrentRegion.Columns(2).SpecialCells(xlCellTypeVisible) ※ 加えました Range("A1").CurrentRegion の部分ですが、 仮にオートフィルタ抽出された表の最左上セルがA1であったとした場合です。 A1セルを含むCurrentRegionで表全体を選択した後でその表内の2列目の可視セル ということになります。 どうも、お世話になりました。