エクセル2009のオートフィルタオプションを日に何十回と使用するのですが、下矢印をマウスでクリックするのが面倒なので、キーボードからショートカットキーでオートフィルタオプションを出せるような設定がないかな?といつも思っています。もし、ショートカットキーがすでに存在するなら教えてください。または、ショートカットキーを割り当てる方法がありましたら教えてください。よろしくお願い致します。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

そういったショートカットはありませんが,マクロを併用して自作することは出来ます。



手順:
ALT+F11を押す
現れた画面で挿入メニューから標準モジュールを選ぶ
(マクロに慣れているなら,出来るだけ個人用マクロブックに登録します)
現れたシートに下記をコピー貼り付ける

Sub Macro1()
If ActiveSheet.AutoFilterMode = False Then Exit Sub
If Application.Intersect(ActiveCell, ActiveSheet.AutoFilter.Range) Is Nothing Then Exit Sub

Application.Dialogs(xlDialogFilter).Show ActiveCell.Column - ActiveSheet.AutoFilter.Range.Column + 1
End Sub

ファイルメニューから終了してエクセルに戻る
開発タブからマクロで今登録したMacro1を選び,ダイアログのオプションボタンでショートカットキーを割り当てる

手順は以上です。

オートフィルタを取り付けたシートで,オートフィルタのセル範囲の中のセルを選んでショートカットキーを押しマクロを起動すると,その列のオートフィルタの(オプション)ダイアログが開きます。
    • good
    • 0
この回答へのお礼

丁寧な説明ありがとうございました。
文面の通り実行しましたら、希望の画面が出てきました。
マクロの知識があるって素晴らしいですね。
勉強したくなりました。
ちなみに、今回のこのショートカットはシートをパスワード保護してると使用出来ないでしょうか?
質問ばかりで済みませんが、お手すきでしたらご回答宜しくお願い致します。

お礼日時:2011/04/23 11:43

プルダウンリストをだすのは



Alt+↓(下向き矢印キー)

でできるはずです。

あと、気になったのですが、オートフィルタとフィルタオプションは別機能です。
多分使用されているのはオートフィルタのオプションの事だと思うのですが・・・
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。

ワンクリックで出したい画面は、下記になります。
オートフィルタ→プルダウンメニューの「テキストフィルタ」→「指定の値を含む」→「オートフィルタ オプション」

言葉足らずですみませんでした。

お礼日時:2011/04/23 11:46

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qフィルタで検索した行をマクロで削除する時のコード。

フィルタで検索した行を一括して削除するマクロを作りました。
記録して加工したマクロで今のところ動くのですが、
理解不能の箇所があるので教えてください。

下記マクロはC列の空白行をフィルターで選択して、表示された行を削除するマクロです。(データは2行目から始まっていて、フィルターは1行目に行います。また、行は全て連続しています。)
また、コメントを各コードにつけています。

ここで、コメント内の(1)で示した箇所は2行目を選ぶことになっているのですが、何故これで良いのでしょう?2行目のデータがフィルターにより隠れることもあるのですが、このコードできちんと動きます。
可視セルしか削除しないのなら、分かるのですが、
そのようなコードも無いようですし・・・
なぜこのコードで動くのか教えてください。

Rows("1:1").Select  '1行目を選ぶ
Selection.AutoFilter  'オートフィルター
Range("C1").Select   'C1を選ぶ
Selection.AutoFilter Field:=3, Criteria1:="=" '空白行を探す。Field3は不明です
Rows("2:2").Select  '(1) 2行目を選択
Range(Selection, Selection.End(xlDown)).Select '2行目から連続した最後の行までを選択
Selection.Delete Shift:=xlUp  '選んだところをDelして上に詰める。
Range("C1").Select  'C1を選ぶ
Selection.AutoFilter Field:=3  'フィルタ解除

基本的なことかもしれませんが、ご教示頂ければ幸いです。
よろしくお願いします。

フィルタで検索した行を一括して削除するマクロを作りました。
記録して加工したマクロで今のところ動くのですが、
理解不能の箇所があるので教えてください。

下記マクロはC列の空白行をフィルターで選択して、表示された行を削除するマクロです。(データは2行目から始まっていて、フィルターは1行目に行います。また、行は全て連続しています。)
また、コメントを各コードにつけています。

ここで、コメント内の(1)で示した箇所は2行目を選ぶことになっているのですが、何故これで良いのでしょう?2行...続きを読む

Aベストアンサー

こんにちは。

簡単に言うと
フィルターを掛けて抽出された範囲を選択して何かしらの処理をさせるとその処理の対象は抽出されたセルのみになるということです。

例えば、4,7行が抽出されていてその2行を選択すると、実際には、4,7行だけではなく、抽出されていない5,6行も選択された状態になり、選択範囲は、4,5,6,7行なりますが、処理の対象はあくまでも抽出された4,7行のみになるということです。
 
ですから、質問のように抽出されてない行を含めて選択しても問題はないことになります。
もちろんそのフィルターを掛ける表の範囲であることはいうまでもありません。
 
但し、選択範囲をループして処理する場合は、選択範囲全て(例では、4567行)が処理対象になりますのでそこは注意が必要です。

通常このような場合は、可視セルのみ選択して処理するのが普通です。
以上です。

Qexcel2007 フィルタオプションがおかしい?

excel2007にて、1800行ほどの企業リストAと、400行ほどの企業リストBを照らし合わせ、電話番号が重複している企業を削除したいと思い、フィルタオプション(詳細設定)を実行しましたが、重複しているものがあるにも関わらず、「1800レコードのうち0レコードが見つかりました」となります。

操作方法は以下の通りです。

・企業リストAにてフィルタ→詳細設定→リスト範囲($A$1:$P$1800)→検索条件範囲(Sheet1 (2)'!$A$1:$A$494)→実行

企業リストAのA列、リストBのA列は共に「電話」というタイトル、それぞれの列は昇順で並び替えをしています。

何がおかしいのでしょうか。

Aベストアンサー

>フィルタオプションがおかしい?
 ⇒ご質問者のリストA、BのA列の書式が相違しているからです。(例えば、ハイフン
  両リストの対象列データを確認して下さい。

Q特定のセルをフィルタするマクロを作りたい

特定のキーワードが含まれるセルをフィルタするマクロを作りたいです。

使用環境はExcel2010です。

口頭ではわかりにくいので、画像を添付します。
添付画像のように、それぞれの人物名と点数が一覧になった表があります。

特定の名前の人で点数が一定以下の行をフィルターしたいのですが、毎回フィルターで名前を選ぶのが面倒なので、マクロの記録機能で下記のマクロを作成しました。

Selection.AutoFilter
ActiveSheet.Range("$A$1:$C$7").AutoFilter Field:=2, Criteria1:="=鈴木", _
Operator:=xlOr, Criteria2:="=田中"
ActiveSheet.Range("$A$1:$C$7").AutoFilter Field:=3, Criteria1:="<70", _
Operator:=xlAnd

上記のマクロで、「田中」と「鈴木」のみ、点数が70点に満たなかった行を抜き出しています。

しかし、他部署の人物も調査の対処に含めるため、E2:E7セルに調査したい対象の名前を入れ、自動的にセルに入力された名前でフィルタリングされるようにしたいです。

この際のマクロの記載方法を知りたいです。

*部署によって人数が異なるため、E2:E7セルに入力する名前がすべて埋まるとは限りません。
*実際の名前と点数は毎月新しいExcelブックで送られてくるので、フィルター用のExcelシートにコピーペーストで張り付けて使用予定です。
*記載されている名前や点数は例です。

特定のキーワードが含まれるセルをフィルタするマクロを作りたいです。

使用環境はExcel2010です。

口頭ではわかりにくいので、画像を添付します。
添付画像のように、それぞれの人物名と点数が一覧になった表があります。

特定の名前の人で点数が一定以下の行をフィルターしたいのですが、毎回フィルターで名前を選ぶのが面倒なので、マクロの記録機能で下記のマクロを作成しました。

Selection.AutoFilter
ActiveSheet.Range("$A$1:$C$7").AutoFilter Field:=2, Criteria1:="=鈴木", _
Oper...続きを読む

Aベストアンサー

こんにちは!

お使いのバージョンがExcel2010というコトですので、一例です。
(Excel2007以降で動くと思います)

Sub Sample1()
Dim i As Long, lastRow As Long, str As String, myArray
lastRow = Cells(Rows.Count, "E").End(xlUp).Row
If lastRow > 1 Then
For i = 2 To lastRow
str = str & Cells(i, "E") & ","
Next i
str = Left(str, Len(str) - 1)
myArray = Split(str, ",")
Range("A1").AutoFilter field:=2, Criteria1:=myArray, Operator:=xlFilterValues
End If
End Sub

※ C列点数でのフィルタは考慮していません。

こんな感じではどうでしょうか?m(_ _)m

こんにちは!

お使いのバージョンがExcel2010というコトですので、一例です。
(Excel2007以降で動くと思います)

Sub Sample1()
Dim i As Long, lastRow As Long, str As String, myArray
lastRow = Cells(Rows.Count, "E").End(xlUp).Row
If lastRow > 1 Then
For i = 2 To lastRow
str = str & Cells(i, "E") & ","
Next i
str = Left(str, Len(str) - 1)
myArray = Split(str, ",")
Range("A1").AutoFilter f...続きを読む

QエクセルVBAのオートフィルタについて

いつもお世話になります。
エクセル2007でVBAでオートフィルタを操作したいのですが、
一部うまくいきません。

以下の様なコードを書いて
日付で絞り込みたいのですが、
何も抽出されません。

リストを見てみると、変数はちゃんと入っており
OK ボタンを押すとその日付で抽出されます。

何故VBAでの操作では抽出されないのでしょうか。
ご存じの方がおられましたら、よろしくお願いします。

Sub test()

Dim mydate As Variant
Dim rng3 As Range
Dim fmt As Variant
Dim objList3 As ListObject
Dim wb1 As Workbook
Dim wb2 As Workbook
Dim wb4 As Workbook
Dim sh1 As Worksheet
Dim sh2 As Worksheet
Dim sh3 As Worksheet
Dim sh4 As Worksheet
Dim sh7 As Worksheet

'-----------------------------------------------------------------------
Set wb1 = Workbooks("301.xlsm")
Set wb2 = Workbooks("1.xls")
Set wb4 = Workbooks("2.xls")

Set sh1 = wb1.Worksheets("@")
Set sh2 = wb1.Worksheets("@@")
Set sh3 = wb2.Worksheets("@@@")
Set sh4 = wb2.Worksheets("@@@@")
Set sh7 = wb4.Worksheets("@@@@@")
'----------------------------------------------------------

sh2.Range("A1:z63").ClearContents

With sh7
Set objList3 = .ListObjects("リスト1")
fmt = .Range("A2").NumberFormatLocal
mydate = Format(mydate, fmt)

objList3.Range.AutoFilter Field:=7, Criteria1:=mydate
objList3.Range.AutoFilter Field:=5, Criteria1:="test"
Set rng3 = objList3.Range.SpecialCells(xlCellTypeVisible)
rng3.Copy sh2.Range("A2")
objList3.Range.AutoFilter Field:=5


objList3.Range.AutoFilter Field:=5, Criteria1:=">=190"
Set rng3 = objList3.Range.SpecialCells(xlCellTypeVisible)
rng3.Copy sh2.Range("A20")

objList3.Range.AutoFilter Field:=5
objList3.Range.AutoFilter Field:=7

End With

Application.CutCopyMode = False

Set rng3 = Nothing
Set fmt = Nothing
Set objList3 = Nothing
Set wb1 = Nothing
Set wb2 = Nothing
Set wb4 = Nothing

Set sh1 = Nothing
Set sh2 = Nothing
Set sh3 = Nothing
Set sh4 = Nothing
Set sh7 = Nothing

End Sub

(一部省略しています)

いつもお世話になります。
エクセル2007でVBAでオートフィルタを操作したいのですが、
一部うまくいきません。

以下の様なコードを書いて
日付で絞り込みたいのですが、
何も抽出されません。

リストを見てみると、変数はちゃんと入っており
OK ボタンを押すとその日付で抽出されます。

何故VBAでの操作では抽出されないのでしょうか。
ご存じの方がおられましたら、よろしくお願いします。

Sub test()

Dim mydate As Variant
Dim rng3 As Range
Dim fmt As Variant
Dim ...続きを読む

Aベストアンサー

コードが長すぎてあまりちゃんと読んでいませんが……。

変数 mydate はStringですよね?
AutoFillterに渡す日付を文字列ではなく、日付データにすると上手くいきそうな気がします。

objList3.Range.AutoFilter Field:=7, Criteria1:=mydate

objList3.Range.AutoFilter Field:=7, Criteria1:=DateValue(mydate)

QエクセルのVBAマクロを使用したフィルタの掛け方

エクセルで オートフィルターを自動で実行するような
プログラムを組んでみたいのですが、アドバイスを
よろしくお願いします。
A1セルに入力した数字を元にA3~B10のデーターに自動でフィルターを実行し表示させたいのです。

よろしお願いします。

Aベストアンサー

こんにちは。
以下のマクロを参考にしてください。
マクロ貼り付け方法: 入力シートをマウス右Click → 「コードの表示」→ 表示される画面に貼り付け

Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Address = "$A$1" Then
    With ActiveSheet
      .Range("A2:A10").AutoFilter Field:=1, Criteria1:="=" & .Range("A1"), Operator:=xlAnd
    End With
  End If
End Sub

Qエクセル・マクロ オートフィルタからコピー

Excel2000使用中です。

縦にたくさん項目が並んでいる表にオートフィルタを行い特定の項目のみを抽出し、抽出した項目のみを他の表にコピペをするという作業をマクロで行ないたいです。
ただし抽出した項目数は50~75項目で日によって変わりますが、抽出先の表は75項目で、75に足りない部分は空白です(空白は必須です)。
始めはオートフィルタをかけた後で上から75行コピーして貼り付けをしてマクロ設定してみたのですが、うまくいきません。

このように日々変化する項目があってもマクロを設定する方法はありますか?

Aベストアンサー

新しいマクロの記録を利用されているのですね。

その場合は、以下のような手順で記録してみてください。

データベースシートの項目名にカーソルを移動し、「データ」「オートフィルタ」で特定の項目を抽出し、Ctrl+Shift+:のショートカット操作で項目名を含むデータ範囲を選択しCtrl+Cでコピーして、貼り付け先のシートで75行のデータ範囲を選択して、Deleteキーで以前のデータをクリアしてから、一番左の項目名の上でCtrl+Vで貼り付けします。
最後にデータベースシートのフィルタモードを解除してください。

Qaccess マクロでのフィルタの解除の方法

フィルタをかける時は、

***************************
アクション:フィルタの実行
フィルタ名:なし
Where条件式:[フィールド1]="あ"
***************************

で、できますが、
フィルタを解除する時はどのようなマクロを作ればいいのでしょうか?

VBAでやるなら、
Me.Form.FilterOn = False
をマクロでやりたいです。

アドバイスよろしくお願いします。

Aベストアンサー

> VBAでやるなら、
> Me.Form.FilterOn = False
> をマクロでやりたいです。

ご質問の趣旨が「並べ替えは維持した状態で、フィルタだけ解除したい」という
ことでしたら、以下の方法で対応できます。


a)フィルタの解除専用の場合
***************************
アクション:コマンドの実行
コマンド:フィルタをすべて解除
***************************
※フィルタが適用されていない状態で実行するとエラーになります。
  (コマンドボタンで実行させる場合、フィルタ未適用時はボタンを使用不可
  にするか、マクロの『条件』欄に「~.FilterOn = True」の記述が必要、と)
  また、フォームのプロパティシートの『データ』タブにある『フィルタ』欄(VBAでの
  Me.Form.Filterに相当)に設定された文字列も削除されます。


b)フィルタの適用/解除を交互に切り替える場合
***************************
アクション:コマンドの実行
コマンド:フィルタの実行/解除
***************************
※当該フォームにフィルタが設定されていない場合、エラーとなります。
 (フォームのプロパティシートの『データ』タブにある『フィルタ』欄に
  フィルタとなる文字列が設定されていればOk:)
 (フィルタが適用済みなら解除、解除済みなら適用、となります)


因みに、マクロのデザインビューで、『デザイン』リボンの『表示/非表示』グループ
内にある『すべてのアクションを表示』をオンにしてもよいのでしたら、以下の
方法もあります。
(VBAでの方法をご存知の上でマクロで対応ということは、勤務先のセキュリティ
 方針によるものかと思いますので、この方法も不可かもしれませんが(汗))

***************************
アクション:値の代入
アイテム:Forms!フォーム名.Form.FilterOn
式:False
***************************

※サブフォームの場合の『アイテム』は以下のようになります:
 Forms!フォーム名!サブフォームコントロール名.Form.FilterOn

> VBAでやるなら、
> Me.Form.FilterOn = False
> をマクロでやりたいです。

ご質問の趣旨が「並べ替えは維持した状態で、フィルタだけ解除したい」という
ことでしたら、以下の方法で対応できます。


a)フィルタの解除専用の場合
***************************
アクション:コマンドの実行
コマンド:フィルタをすべて解除
***************************
※フィルタが適用されていない状態で実行するとエラーになります。
  (コマンドボタンで実行させる場合、フィルタ未適用時はボタンを使用不可
  にするか、...続きを読む

QExcel2003でオートフィルタを使う場合

Excelをデータベース的に使用している場合,オートフィルタの機能はとても便利だと思います。

しかし ▽のマークが必ず先頭行にできますよね。

例えば
見た目を綺麗にするために,A2~K4の行までタイトル行を作成下とします。
そして データがA5~K100まであるとします。

この場合,オートフィルタを使うと,1行目に▽マークができるため
データの抽出を行うと タイトル行が見えなくなってしまいます。

なんとかして
タイトル行を残したままで データの部分だけを抽出するようにできないでしょうか?
よろしくお願いします。

Aベストアンサー

A4~K4をセル選択して、オートフィルタを作動させてみてください。

QExcel2003でシート保護(オートフィルタ使用にはチェック)するとマクロのオートフィルタでエラーになる

QNo.3901563で回答いただき、Excelの試用で保護後のオートフィルタは使えないのはわかりました。
そこで予めオートフィルタを設定し、シートに保護をかけました。
Excelの画面上ではオートフィルタは使用できます。
マクロよりオートフィルタの抽出条件を変更するコマンドを実行すると「保護されたシートに対して、このコマンドは実行できません」と表示されます。コマンドは新しいマクロの記録で操作を記録したものです。記録したときは特にエラーはでませんでした。

Selection.AutoFilter Field:=2, Criteria1:="AAA"

マクロのコマンドでは保護のかかったシートのオートフィルタの抽出条件を変更することは出来ないのでしょうか。
マクロの前後にシート保護を解除するコマンドを入れようかとも思ったのですが、保護にパスワードがかかっており、本末転倒となるもので。

Aベストアンサー

こんにちは。

'標準モジュールで、自動設定

Sub Auto_Open()
Const PWS As String = "PS" 'パスワード
 With Worksheets("Sheet2")
  .Unprotect PWS
  .Protect PWS, UserInterFaceOnly:=True
  '以下をつければ、手動でもオートフィルタは使えます。
  .EnableAutoFilter = True
 End With
End Sub

'-----------------------------------------------
UserInterFaceOnly:=True のオプションをつければ、マクロで処理できますし、また、EnableAutoFilter にすれば、保護された状態で、オートフィルタは使えます。

なお、オートフィルタは、こんな感じです。

Sub Test1()
With Range("A1").CurrentRegion
 .AutoFilter Field:=2, Criteria1:="aaa"
End With
End Sub

こんにちは。

'標準モジュールで、自動設定

Sub Auto_Open()
Const PWS As String = "PS" 'パスワード
 With Worksheets("Sheet2")
  .Unprotect PWS
  .Protect PWS, UserInterFaceOnly:=True
  '以下をつければ、手動でもオートフィルタは使えます。
  .EnableAutoFilter = True
 End With
End Sub

'-----------------------------------------------
UserInterFaceOnly:=True のオプションをつければ、マクロで処理できますし、また、EnableAutoFilter にすれば、保護された状態...続きを読む

QエクセルでフォームのDropDownとオートフィルタのDropDown

エクセルでフォームのDropDownとオートフィルタのDropDownについて。
エクセル2000です。
ワークシート上にフォームのDropDown(コンボボックス)や、オートフィルター、そして入力規則でリストの設定があります。

今のVBAの書き方だとこれらはすべてShapeです。
そうすると、フォームのDropDownとオートフィルター、そして入力規則のリストの識別がVBAではとても難しいです。これらはすべてTypeは msoFormControlですし、さらにFormControlTypeも xlDropDownとまったく同一です。

なんとか識別する方法がないか昨夜から試行錯誤の結果、オートフィルター、そして入力規則のリストはシート上に貼り付けてあるわけではないためか、TopLeftCellが取得できないことに気づきました。そこで下記のような識別のための実験コードを書いてみたのですが、多分もっといい方法があるのではと思い、質問させていただきます。

もちろん、Shapesコレクションを使用せず、古いDrawingObjectsコレクションを持ち出せばオートフィルターや入力規則は最初から対象外となるのは存じておりますのでそれ以外の方法をご教示くださいませ。
(o。_。)oペコッ.

Sub hantei()
 Dim i As Integer, x As String
 Dim Obj As Object
  For Each Obj In ActiveSheet.Shapes
    If Obj.Type = msoFormControl Then
      If Obj.FormControlType = xlDropDown Then
        On Error Resume Next
        x = Obj.TopLeftCell.Address
        On Error GoTo 0
        If x = "" Then
          i = i + 1
        Else
          x = ""
        End If
      End If
    End If
  Next
  MsgBox i & "個、入力規則のリストまたはオートフィルターがあります。"
End Sub

エクセルでフォームのDropDownとオートフィルタのDropDownについて。
エクセル2000です。
ワークシート上にフォームのDropDown(コンボボックス)や、オートフィルター、そして入力規則でリストの設定があります。

今のVBAの書き方だとこれらはすべてShapeです。
そうすると、フォームのDropDownとオートフィルター、そして入力規則のリストの識別がVBAではとても難しいです。これらはすべてTypeは msoFormControlですし、さらにFormControlTypeも xlDropDownとまったく同一です。

なんとか識別する方法がないか昨...続きを読む

Aベストアンサー

意図が理解できません。
『DrawingObjectsコレクションは古い書き方だから使いたくないのでShapesで回したい』
という事ではなかったのですか?

OLEObjectsは別に古くないからそのまま使えば良いだけでは?
どうしてもShapesで回したいなら
Dim s As Shape
For Each s In ActiveSheet.Shapes
  If s.Type = msoOLEControlObject Then
    Debug.Print s.Name, s.OLEFormat.ProgId
  End If
Next
とでも?

#以下個人的意見。
[ActiveXコントロール]をシート上に多数配置して使うのは個人的にはあまり好きではありません。
>素直にDrawingObjectsを使う事をおすすめします。
って書いたように、[フォーム]コントロールは元々Excelライブラリのものですから、
シート上に配置したとしても親和性が高く、『古い』というより『枯れて安定している』ように思います。
安定した[フォーム]コントロールを使うのであればそれに適したDrawingObjectsコレクションを使うのが良いでしょう。
何に拘りがあるのかわかりませんが、扱うObjectによってよりベターな手法を選択するのが普通だとおもいますけど?

意図が理解できません。
『DrawingObjectsコレクションは古い書き方だから使いたくないのでShapesで回したい』
という事ではなかったのですか?

OLEObjectsは別に古くないからそのまま使えば良いだけでは?
どうしてもShapesで回したいなら
Dim s As Shape
For Each s In ActiveSheet.Shapes
  If s.Type = msoOLEControlObject Then
    Debug.Print s.Name, s.OLEFormat.ProgId
  End If
Next
とでも?

#以下個人的意見。
[ActiveXコントロール]をシート上に多数配置して使うのは個人的にはあまり好き...続きを読む


人気Q&Aランキング