フィルタ検索後、最上位行に移動する方法

このQ&Aのポイント
  • フィルタ検索後、最上位行に移動する方法を教えてください。
  • VBAを使用して、シート内のフィルタ検索後の最上位行に移動する方法を教えてください。
  • フィルタ検索後、データの最上位行に移動するVBAのコードを教えてください。
回答を見る
  • ベストアンサー

フィルタ検索後、最上位行に移動する方法

シート(請求書データベース)内のデータにフィルターをかけてデータ抽出後、最上位行に移動するVBAをご教授願いますでしょうか? ちなみにフィルター検索後も下記VBAで最下位行に移動はできます。 Sub 最下位行移動() Selection.End(xlDown).Select End Sub 下記VBAでは、フィルター検索後でも単純にA1行が選択されるだけで、フィルター抽出後の最上位行に移動できません。A1行は固定窓に設定しています。 Range("A2").Selectを入れると、フィルター抽出を解除した後であれば問題ないのですが、フィルター抽出後はA1行(先頭行)の下は何行目が来るかわかりません。 Sub 最上位行移動() Selection.End(xlup).Select End Sub

質問者が選んだベストアンサー

  • ベストアンサー
  • HohoPapa
  • ベストアンサー率65% (454/691)
回答No.1

Range("A1").Select Application.SendKeys "{Down}" ↑のコードでいかがでしょうか。

shibushijuko
質問者

お礼

ご回答いただき、ありがとうございます。フィルターをかけた後、見事に最上位行に移動できました。 この短いコードで出来るとは、感謝です。

その他の回答 (2)

  • HohoPapa
  • ベストアンサー率65% (454/691)
回答No.3

SendKeyを使わない解もポストします。 Sub MyTest()  Dim wkCnt As Integer  With ThisWorkbook.Sheets(1)   wkCnt = 2   Do    If .Rows(wkCnt).Hidden = False Then     .Cells(wkCnt, 1).Select     Exit Do    End If    wkCnt = wkCnt + 1   Loop  End With End Sub

shibushijuko
質問者

お礼

ご回答いただき、ありがとうございます。内容を理解したうえで、検証してみます。

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

例データ Sheet1のA1:B11 で コード 順序 <ーー見出しです a n1 s n2 d n3 a n4 a n5 s n6 x n7 c n8 v n9 a n10 ーー 標準モジュールに ub test02() With Worksheets("Sheet1") .Range("A1").AutoFilter _ Field:=1, Criteria1:="=a" End With ActiveSheet.UsedRange.SpecialCells(xlCellTypeVisible).Range("2:2").Select End Sub を実行すると、フィルタ後の最上行をSelectしたが。(最上行にある見出し行は除いて)。 余りよく出る質問ではないので、十分な自信なし。

shibushijuko
質問者

お礼

ご回答いただき、ありがとうおございます。検証してみます。

関連するQ&A

  • エクセル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

  • マクロ オートフィルタで困っています。

    マクロ オートフィルタで困っています。 1列目と2列目からそれぞれ条件をフィルタで抽出し、抽出された行を削除するマクロを組んだのですが(下記)、Bの条件が表にない場合に2行目から下が全て削除されてしまいます。 元の表は毎週変わるため、抽出する条件があるかないかはその時次第です。 オートフィルタにこだわってはいませんが、その他の抽出方法もいまいち分からず……。 どのようにすればよいのか、教えていただけますでしょうか。 宜しくお願い致します。 <マクロ> Sub Macro() Selection.AutoFilter Field:=1, Criteria1:="A" Selection.AutoFilter Field:=2, Criteria1:="B", Operator:=xlAnd Dim gyou(1) As Long gyou(0) = 2 gyou(1) = Range("A1").CurrentRegion.Rows.Count Rows(gyou(0) & ":" & gyou(1)).Select Selection.Delete Shift:=xlUp End Sub

  • フィルタオプションを使って検索条件数が変わる場合(マクロ)

    こんにちは。 今マクロでフィルタオプションを使ってデータを抽出するための手順を登録しています。 Excelの画面は (1)社員番号 氏名  部署 (2)社員番号 氏名  部署   0001   田中   0002   佐藤   0003   鈴木   0004   高橋 となっているとします。上の(1)は検索条件を入力する場所です。(2)は検索元となるデータ及び検索したデータを表示させる場所です。 今登録したマクロを少しだけ修正して以下のようになっています。 Rows("25:25").Select Range(Selection, Selection.End(xlDown)).Select Selection.AdvancedFilter action:=xlFilterInPlace, criteriarange:=Rows _ ("1:5"), unique:=False Range("A25").Select 今検索条件の部分はcriteriarange:=Rows("1:5")となっていますが、このままだと6行目以降に条件を入れた場合その条件はひっかからないようになってしまいます。 何行目まで条件を入れるかわかりませんが、時々によって6つだったり5つだったりすると思うのです。なので、条件が入っている行までを検索条件になるようにしたいのですが、どのようにすればいいのでしょうか? マクロについてはかなり初心者ですが、業務上便利だと思い、どうしても作りたいので教えていただけないでしょうか? 説明が長くてすみません。 よろしくお願いします。

  • エクセル オートフィルタ中の最終行移動マクロ

    表題について質問させていただきます。 行数の決まっていないA~E列までデータが入っている表があります。 仮に10行だったとして、マクロの操作でA11に移動させるには、以下で可能だったのですが、 ・Range("A65536").End(xlUp).Offset(1).Select ・Range("A1").End(xlDown).Offset(1,0).Select オートフィルタ実行中は不可視セルが選択されてしまい上記例のA11に移動できません。 オートフィルタ実行中にもA11へ移動する方法をご教授願います。 ※行数が15行のときはA16へ移動。  新規に入力する行へ移動することが望みです。 エクセル2003です よろしくお願いいたします。

  • VBAで行を挿入する

    VBAを始めた初心者です。 Exel2002使用です。 VBAでA列の4行目から10行目に行の挿入をできるようにしようと下記のように書きましたが、Rows("i:i").Selectの部分でデバックがかかってしまいます。間違っている理由がわからないのですがよろしくお願いします。 また、DO While Loopステートメントを使ってA列が空白になるまで(例えばA4セル以下の)行を挿入とする場合の方法も教えていただけましたら幸いです。 Sub 4行目から10行目まで() Dim i As Integer For i = 4 To 10 Cells(i, 1).Value = i Rows("i:i").Select Selection.Insert Shift:=xlDown Next i End Sub Sub 4行目から空白になるまで() Dim i As Integer Range("A4").serect Do While activecell.value = "" Cells(i, 1).Value = i Rows("i:i").Select Selection.Insert Shift:=xlDown activecell.offset(1,0).select Loop End Sub

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

    フィルタで検索した行を一括して削除するマクロを作りました。 記録して加工したマクロで今のところ動くのですが、 理解不能の箇所があるので教えてください。 下記マクロは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  'フィルタ解除 基本的なことかもしれませんが、ご教示頂ければ幸いです。 よろしくお願いします。

  • VBAによるフィルターについて

    VBAによるフィルターについて 表のフィールドから指定したセルの値を含む行をフィルターにかけるVBAを作成しています。 下記のように作成したのですが,うまくいきません。 表の上に検索値を入力するところを設定しました。 (C1=検索値です。)お願いします。 Sub Macro2() ' ' Macro2 Macro ' ' ActiveSheet.Range("$A$4:$L$425").AutoFilter Field:=3, Criteria1:="range(*c1*)", _ Operator:=xlAnd End Sub

  • Excelマクロでオートフィルターからコピペ

    ファイルのB列の値から0以外の値をオートフィルターで抽出し、値を、別のファイルのD列の一番下に貼りつけるマクロを作っていますがうまくいきません。 今作ったのは Sub macro1() If ActiveSheet.AutoFilterMode = False Then Range("A:G").Select Selection.AutoFilter Else Selection.AutoFilter Range("A:G").Select Selection.AutoFilter End If Selection.AutoFilter Field:=2, Criteria1:="<>0", Operator:=xlAnd Range("A1").Select Range("B2", Range("B2").End(xlDown)).Select Selection.Copy Windows("貼りつけるファイル名").Activate Cells(Rows.Count, 4).End(xlUp).Offset(1).Select ActiveSheet.Paste End Sub です。 フィルターで0以外の値を抽出しコピーまではできていますが、貼りつけるところでエラーがでます。 Microsoft Visual Basic 400 というエラーです。 何が悪いのか分かりません・・・。 分かる方いましたらご教授ください。よろしくお願いします。

  • Excelのマクロで現在行を指定する方法を

    Excelのマクロで現在行を変えて、現在見ている行にする方法を教えてください。 下記は操作を記録させて作成したものですが、これを例えば、Excelの213行で実行させると 205行に196~203行が再度追加されてしまいます。 これを変えて、現在見ている例えば213行の前に196~203行を入れたいという場合はどうすればいいのでしょうか? つまり、Rows("205:205").Selectの205というのを、現在見ている行に変更できれば良いように思うのですが。よろしくお願いします。 Sub Macro3() ' Keyboard Shortcut: Ctrl+Shift+A   Rows("196:203").Select   Selection.Copy   Rows("205:205").Select   Selection.Insert Shift:=xlDown   ActiveWindow.SmallScroll Down:=9 End Sub

  • VBAでセルの移動方法

     エクセルのVBAでセルが何処にあっても、その行の一番左端の列に移動するようにしたいのですが(行は変えずに列だけ)、どうすれば良いのでしょうか?  Selection.End(xlToLeft).Select と打ってみたのですが、一番左まで行かず、途中の空白行等で止まってしまう事があります。  どなたか教えて頂けませんか。

専門家に質問してみよう