- ベストアンサー
オートフィルタのかかった行のセルを、選択するコードは?
Excelです。 例えば、下記の、 任意にてオートフィルタをかけた行の 「C列のセル1つ」 を選択するコードは? 誤 AutoFilter Columns(3).Select AutoFilter Field:=3.Select よろしくお願い致します。 ----- A B C D E F G H 1 ・ ・ ・▼▼▼▼▼▼▼▼ ・ 50 ・
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
AutoFilterオブジェクト AutoFilterプロパティ AutoFilterメソッド と、あるのでややこしいですね。 '「本質問の回答コード」 ActiveSheet.AutoFilter.Range.Cells(1, 3).Select
その他の回答 (4)
- pbforce
- ベストアンサー率22% (379/1719)
▼ってオートフィルターの三角印のことですか? 頭(見出)からオートフィルターをかけて選択するのではなく、途中のデータからオートフィルターをかけて、そのかけたところから、抽出結果をコピーしたいと言うことでしょうか? 途中より上にあるデータは対象外にしたいがための変則的な使用方法だと思いますが、途中の位置を選ぶのは何か法則がありますか?
お礼
ご回答、誠に有難うございました。 文字列用の日付列を追加することも考えようと思います。
補足
>▼ってオートフィルターの三角印のことですか? おっしゃられる通りでございます。 説明不足で申し訳ありませんでした。 縦に、05年~07年までのデータがありますので、06年だけとか07年だけとかのデータを抽出する時に使用しております。 法則というほどではございません。
- imogasi
- ベストアンサー率27% (4737/17069)
具体例を挙げて質問のこと。 手本を見せる。 間違っていたら質問の補足を。 例データ A列に 元データあり コード A1:A9 1 2 4 3 1 6 1 3 データーフィルタで「1」を選択するとする。 コード 第1行 1 第2行 1 第6行 1 第8行 と表示される。 ーー ここの例えば2番目の行の第6行をSelect したいということか。 オートフィルタ関係のプログラムの指定はマクロで判るのだが 、プログラムでは、指定は「2」(番目の2)ですね。 ーーi以下オートフィルタのVBA Sub Macro1() Selection.AutoFilter Field:=1 Selection.AutoFilter Field:=1, Criteria1:="1" End Sub ーーー以下が本題 Sub Macro3() Range("A1:A8").Select Set rng = Selection.SpecialCells(xlCellTypeVisible) k = 0 For Each cl In rng k = k + 1 If k = 3 Then MsgBox cl.Row cl.Interior.ColorIndex = 6 End If Next End Sub If k = 3 Thenの3の部分は、第1行目の見だし行も含めてのことなので、2番目は2+1=3にする必要がある。 上記は、見えている「実質データ行の」第2番目の行のパターンを黄色に設定した例。
お礼
ご回答、誠に有難うございました。 大変参考になりました。
- pbforce
- ベストアンサー率22% (379/1719)
え~と、ご質問の内容でオートフィルターを使う意味は何でしょうか?必要無いのではないですか? マクロの処理途中で必要な事かもしれませんね、そのへんとはまったく関係なく、C列の検索したい数値(文字かも)が入っているセルをアクティブにすればよいだけ?と理解しましたが、違いますでしょうか。 そうすると、 For x=1 To Range("C1").End(xlDown).Row If Cells(x,3).Value=検索値 Then Cells(x,3).Select Exit For '検索値がひとつだけならあったほうがよい End If Next x とすれば、目的の行動が出来ると思います。
補足
度々と申し訳ございません。 私の説明のし方が、悪かったように思います。 また、私の力では、うまく説明ができないかも知れませんが、再度説明してみます。 >C列の検索したい数値(文字かも)が入っているセルをアクティブにすればよいだけ? C列で 「▼マーク」 のあるセル1つだけをアクティブにすればよいだけ でございます。 必ず、オートフィルタにて抽出後の状態であり、 そして、オートフィルタのかかった行の、 「希望する1つだけのセル」 をいきなりアクティブにしたいわけでございます。 このオートフィルタの▼の行は、私が解除しては何度も自由に変更しますので、行番号も変動します。 現在は、 下記 「Selection」 を、 私が手動にて、 ・▼▼▼▼▼▼▼▼ ・ ↑ここの3つ目の 「1つのセルだけ」 を私が手動にて、選択しております。 このセルは、空白、数値、文字、等であり決まってなく、セル内容は考慮してません。 この1つのセルだけを、いきなり、アクティブセルにしたいわけでございます。 --------------- オートフィルタにて抽出後データをコピーします。 Sub 現在は手動にて選択() ここに「本質問の回答コード」が記述されると思います Range(Selection, Selection.End(xlDown)).Select Selection.Copy ・ ・省略 ・ End Sub ---------------
- pbforce
- ベストアンサー率22% (379/1719)
Cells(i,3).Select で、C列のどのセルでも選択できます。 おそらく、ご質問はそんなことを聞きたいのではないと思います。 もう少し具体的にやりたいことを教えてください。 どこまではやってみて、どんな結果になったけど、実際にはこのような結果になって欲しい、と言うようなことが分かれば、手助けし易いかも知れません。
お礼
度々、申し訳ありません。再度補足させて下さいませ。 本質問のコードを、マクロの一部に使用するつもりですので、出来れば 「好みの行番号(ご回答されたi)」 を手入力しないで走らせたいと思っております。 例えば、下記のコードの場合は、可能なので、本質問のコードも可能ではないかなと思った次第でございます。 '「1」を抽出する Selection.AutoFilter Field:=3, Criteria1:="1" よろしくお願い致します。
補足
説明不足で、大変申し訳ありませんでした。 「好みの行にオートフィルタをかけた1行だけ」 の 「希望するセル1つ」 を選択したいのですが、 うまく出来ません。 例題の場合 実行後 ---------- A B C D E F G H 1 ・ ・ ↓ここの3つ目の 「1つのセルだけ」 を選択したいのでございます。 ・▼▼▼▼▼▼▼▼ ・ 50 ・ ---------- よろしくお願い致します。
お礼
ご回答、誠に有難うございました。 おかげさまで、大変安全に使用できます。