【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード

Excelです。

例えば、下記の、 任意にてオートフィルタをかけた行の 「C列のセル1つ」 を選択するコードは?

AutoFilter Columns(3).Select
AutoFilter Field:=3.Select

よろしくお願い致します。
-----
 A B C D E F G H



・▼▼▼▼▼▼▼▼

50

A 回答 (5件)

▼ってオートフィルターの三角印のことですか?



頭(見出)からオートフィルターをかけて選択するのではなく、途中のデータからオートフィルターをかけて、そのかけたところから、抽出結果をコピーしたいと言うことでしょうか?

途中より上にあるデータは対象外にしたいがための変則的な使用方法だと思いますが、途中の位置を選ぶのは何か法則がありますか?

この回答への補足

>▼ってオートフィルターの三角印のことですか?
おっしゃられる通りでございます。
説明不足で申し訳ありませんでした。

縦に、05年~07年までのデータがありますので、06年だけとか07年だけとかのデータを抽出する時に使用しております。
法則というほどではございません。

補足日時:2008/01/09 16:48
    • good
    • 0
この回答へのお礼

ご回答、誠に有難うございました。
文字列用の日付列を追加することも考えようと思います。

お礼日時:2008/01/09 21:13

AutoFilterオブジェクト


AutoFilterプロパティ
AutoFilterメソッド
と、あるのでややこしいですね。

'「本質問の回答コード」
ActiveSheet.AutoFilter.Range.Cells(1, 3).Select
    • good
    • 0
この回答へのお礼

ご回答、誠に有難うございました。
おかげさまで、大変安全に使用できます。

お礼日時:2008/01/09 21:14

具体例を挙げて質問のこと。


手本を見せる。
間違っていたら質問の補足を。
例データ 
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番目の行のパターンを黄色に設定した例。
    • good
    • 0
この回答へのお礼

ご回答、誠に有難うございました。
大変参考になりました。

お礼日時:2008/01/09 21:12

え~と、ご質問の内容でオートフィルターを使う意味は何でしょうか?必要無いのではないですか?


マクロの処理途中で必要な事かもしれませんね、そのへんとはまったく関係なく、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
---------------

補足日時:2008/01/09 00:39
    • good
    • 0

Cells(i,3).Select



で、C列のどのセルでも選択できます。

おそらく、ご質問はそんなことを聞きたいのではないと思います。
もう少し具体的にやりたいことを教えてください。
どこまではやってみて、どんな結果になったけど、実際にはこのような結果になって欲しい、と言うようなことが分かれば、手助けし易いかも知れません。

この回答への補足

説明不足で、大変申し訳ありませんでした。
「好みの行にオートフィルタをかけた1行だけ」 の 「希望するセル1つ」 を選択したいのですが、
 うまく出来ません。


例題の場合
実行後
----------
 A B C D E F G H


・   ↓ここの3つ目の 「1つのセルだけ」 を選択したいのでございます。
・▼▼▼▼▼▼▼▼

50

----------
よろしくお願い致します。

補足日時:2008/01/08 17:43
    • good
    • 0
この回答へのお礼

度々、申し訳ありません。再度補足させて下さいませ。
本質問のコードを、マクロの一部に使用するつもりですので、出来れば 「好みの行番号(ご回答されたi)」 を手入力しないで走らせたいと思っております。
例えば、下記のコードの場合は、可能なので、本質問のコードも可能ではないかなと思った次第でございます。

'「1」を抽出する
Selection.AutoFilter Field:=3, Criteria1:="1"

よろしくお願い致します。

お礼日時:2008/01/08 18:48

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!