フィルターオプションのマクロ登録について

このQ&Aのポイント
  • Excel2016で名簿データを作成しています。フィルターオプションを使用して、地区ごとのデータをそれぞれ別シートに作成していますが、マクロの登録について初めて知ったため、登録してみました。しかし、マクロを実行しても一部のデータが反映されない問題が発生しています。原因を教えてください。
  • Excel2016のフィルターオプションのマクロ登録方法について教えてください。名簿データを地区ごとに別シートに分けるためにフィルターオプションを使いたいのですが、具体的な手順がわかりません。
  • Excel2016のフィルターオプションで地区ごとのデータを別シートに分ける方法を教えてください。名簿データを管理しており、地区ごとに一覧を作成したいのですが、どのような手順で操作すればよいのかわかりません。
回答を見る
  • ベストアンサー

フィルターオプションのマクロ登録について

Excel2016のフィルターオプションのマクロ登録について Excel2016で名簿データを作成しています。 フィルターオプションを使用して、地区ごとのデータをそれぞれ別シートに作成していますが、 「マクロの登録」の存在を初めて知ったため、登録してみました。 (マクロについては全くの初心者です) マクロの実行まではうまくいったのですが、元データを更新した後に、マクロを実行しても A列の番号だけが抽出され、詳細内容が反映されません。 (前回に抽出されたものをすべて消してやり直せば反映されます) 原因として考えられることがあれば教えてください。 マクロの内容は以下の通りです。 (元データは「練習」としています) よろしくお願いいたします。 ----------------------------------------------------------- Sub 地区別() ' ' 地区別 Macro ' ' Application.CutCopyMode = False Application.CutCopyMode = False Sheets("練習").Range("テーブル8[#All]").AdvancedFilter Action:=xlFilterCopy, _ CriteriaRange:=Range("A1:A2"), CopyToRange:=Range("A4"), Unique:=False End Sub

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

  • ベストアンサー
  • unokwave
  • ベストアンサー率58% (966/1654)
回答No.1

その上手くいく処理を実行すれば良いのでは。 処理をやり直す以下の記述をAdvancedFilterの前に実行するとどうなりますか。 If Sheets("練習").FilterMode Then Sheets("練習").ShowAllData End If

kokiyurobo
質問者

補足

ありがとうございます。 やはり、最初のA列のNo.だけしか反映されず、詳細データが反映されませんでした。 Sub 地区別() ' ' 地区別 Macro ' If Sheets("練習").FilterMode Then Sheets("練習").ShowAllData End If ' Sheets("練習").Range("テーブル8[#All]").AdvancedFilter Action:=xlFilterCopy, _ CriteriaRange:=Range("A1:A2"), CopyToRange:=Range("A4"), Unique:=False End Sub 上記で実行しましたが、 入力箇所が間違っていますでしょうか。

その他の回答 (1)

  • unokwave
  • ベストアンサー率58% (966/1654)
回答No.2

>前回に抽出されたものをすべて消してやり直せば反映されます これはA4の内容ですか?それなら Sheets("練習").Range("A4").Clear を実行すればよいはず。

関連するQ&A

  • フィルターオプションの設定をマクロで

    フィルターオプションの設定をマクロでできるように設定していますが、うまくいきません。 アポというシートから訪問というシートにフィルターオプションの設定で情報を抽出して、 マクロで簡単に繰り返せるようにしたいです。 手動でフィルターオプションの設定を行うとB2~N10まで反映するんですが、 それを記録したマクロを実行すると、B列の値しか反映しません。 ただ、一度反映したセルを全削除してからマクロを実行すると、 一度目と同じように全て反映します。 ------------------------ Sub アポ→訪問() ' ' アポ→訪問 Macro ' ' Application.CutCopyMode = False Sheets("アポ").Cells.AdvancedFilter Action:=xlFilterCopy, CriteriaRange:= _ Range("A1:A2"), CopyToRange:=Range("B1"), Unique:=False ------------------------ 始めての質問で、マクロについての知識も少ないので わかりづらいかもしれませんが、よろしくお願いします。

  • フィルタオプションをマクロで

    マクロ初心者です。 フィルタオプションをマクロに登録しました。 検索範囲はマクロを登録したときの表の範囲(A5:Q50)になっていますが データは毎日増えるため(A5:Q10000)に変更して抽出自体はうまくいきましたが、 リストで最終行に金額の合計を出しているのですがそれが表示されなくなります。 抽出時の最終データでフィルタオプションを実行するマクロをするにはどうしたらよいでしょうか? 質問がわかりにくくてすみません。 フィルタオプションの部分のマクロは下記です。 よろしくお願いいたします。 Range("A5:Q10000").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Range("A1:B3"), Unique:=False

  • 複数のシートにまたがり、フィルタオプションの設定から値を抽出するマクロ

    複数のシートにまたがり、フィルタオプションの設定から値を抽出するマクロを組んでおります。 表示したくないシート(data,output)を非表示にしたら、エラーが出てしまいました。 非表示シートの状態で処理することはできませんでしょうか。 Sub Macro7() Application.ScreenUpdating = False Sheets("data").Select Columns("A:J").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _ Sheets("マップ").Range("E2:N3"), Unique:=False Columns("A:J").Select Selection.Copy Sheets("output").Select Range("A1").Select ActiveSheet.Paste Application.CutCopyMode = False Selection.Copy Sheets("マップ").Select Range("E5").Select ActiveSheet.Paste Range("H4").Select Sheets("data").Select Application.CutCopyMode = False ActiveSheet.ShowAllData Sheets("マップ").Select End Sub

  • こんなマクロなんですが。

    下記のマクロでエクセルの表からデータ(文字列)を取得するようにしたいとおもっています。 Range("B23").Select Selection.Copy Range("F23").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Application.CutCopyMode = False Range("B24").Select Selection.Copy Range("F24").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Range("B25").Select Application.CutCopyMode = False Sheets("September 03").Copy Before:=Sheets(2)          ←ここ Selection.Copy Sheets("September 03 (2)").Select                   ←ここ Sheets("September 03 (2)").Name = "September 10"       ←ここ Range("B33").Select Application.CutCopyMode = False ActiveWindow.SmallScroll Down:=-15 Range("F12:L18").SelectEnd Sub と、まだ続くんですが、とりあえずここまでで。 番地のデータを取り込むようにしたいんですが、うまくいきません。 ←ここ っていうのがまさにそれです。

  • フィルタオプションをマクロで

    1 テキストを読み込んで並べ替えなどして   表(1行目はタイトル)を作り、   フィルタをかける(マクロ) 2 フィルタオプションで必要なデータを抽出   その際に日付を手入力する   (例  A列(毎回決まった列)     2005/4/1以上 降順) 3 その後の作業(マクロ) このように1のマクロを起動して その後 2を手作業して 更に3をマクロを 起動すると言う方法をとっていますが 2の内容もマクロで作って 「日付」だけを 入力するように求められて それを入力するだけで その後の作業も自動で行うことは出来るでしょうか?

  • Excel フィルタオプション マクロ

    <Excel2013> フィルタオプションで抽出条件を加工し 別シート(抽出結果)に抽出したい。 検索条件で「文字を含む」の場合「=”=*"」など 抽出記号入力するのが分からない人の為に、 検索したい文字だけ入力してVBAで加工して データを抽出したいのですが、上手く加工出来ません。 どうかお知恵をお貸し下さい! ◎例題(実際は1000件位横に広いデータです) 【シート名:青森】 住所            処理No.     青森県青森市南町・・・   10  ・ 青森県五所川原市北町    10 【シート名:秋田】 住所            処理No.     秋田県大館市北町・・・   20  ・ 秋田県秋田市栄町・・・   10 【シート名:抽出結果】      C2      D2    F2      G2 検索条件 抽出シート  住所    抽出シート  住所      秋田    栄              <抽出実行ボタン押下> ★検索条件:シート=秋田 and 住所に『栄』を含むデータを抽出 同シート【A7セル】を基準に抽出データを表示 Sub 抽出() Dim Sh As Worksheet ’* Set Sh = Sheets("抽出結果") Sh.Rows("7:7").Select Range(Selection, Selection.End(xlDown)).Select ' Sh.Range("A7").Select ★検索条件範囲:E2/F2へ加工した条件を設定  '** 抽出条件 If Sh.Range("C2").Value <> "" Then Sh.Range("F2").Value = "=” & Sh.Range("C2").Value End If If Sh.Range("D2").Value <> "" Then Sh.Range("G2").Value = "=”&"=*" & Sh.Range("D2").Value & "*" End If ’* Select Case Range("C2").Value Case "青森" Sheets("青森").Range("1:cx2000").AdvancedFilter Action:=xlFilterCopy, _ CriteriaRange:=Range("F1:G2"), CopyToRange:=Range("A7"), Unique:=False Case "秋田" Sheets("秋田").Range("1:Cx2000").AdvancedFilter Action:=xlFilterCopy, _ CriteriaRange:=Range("F1:G2"), CopyToRange:=Range("A7"), Unique:=False End Select End Sub

  • フィルタオプションの設定の条件における文字について

    フィルタオプションの設定の検索条件範囲で指定した条件が半角・全角や大文字・小文字にかかわらず抽出するということはできますか? 商品情報というブックがあり、抽出シート(1枚目)と2枚目のシートにデータが入っています。 2枚目のシートのフィールド名を抽出シートのA1を基準に貼り付けています。 条件をA1:I3あたりに入力し、2枚目のシートの条件に合うものを抽出シートのA5以降に取り出すマクロを書いています。次回マクロを起動させたときにA5以降にデータがあれば削除させます。 いろいろな方に教えていただいて下記のようにできあがったのですが、ちょっと問題があって 質問しています。 Dim myRow1 As Long, myRow2 As Long myRow1 = Sheets(2).Range("A" & Rows.Count).End(xlUp).Row myRow2 = Sheets("抽出").Range("A" & Rows.Count).End(xlUp).Row If myRow2 >= 5 Then Sheets("抽出").Range("A5:I" & myRow2).ClearContents Sheets("抽出").Range("A5:I" & myRow2).ClearFormats Sheets(2).Range("A1:I" & myRow1).AdvancedFilter _ Action:=xlFilterCopy, _ CriteriaRange:=Sheets("抽出").Range("A1").CurrentRegion, _ CopyToRange:=Sheets("抽出").Range("A5"), Unique:=False End Sub 現状では元データが全角だと半角で入力すると抽出されず、元データが小文字だと大文字は抽出されません。 いちいち元データの状態を把握しての検索になってしまいます。 このマクロを修正して全角・半角もしくは小文字・大文字にかかわらず抽出できるようにすることは可能でしょうか? どなたかご存知の方がいらっしゃれば教えていただけないでしょうか?

  • エクセルでの自動抽出がうまくいきません

    エクセル2000で自動抽出機能を使用しましたが最初の行の項目だけ重複して抽出されます。直す方法はありませんか?自動抽出の方法はデータセルを指定してデータ→フィルタ→フィルタオプションの設定→選択範囲内をデータのセルに指定、指定した範囲を抽出先のセル指定、重複するレコードは無視するにチェックをいれokです。なお上記のマクロは次のようになっています。Sub 商品名の集計() ' ' 商品名の集計 Macro ' マクロ記録日 : 2002/6/30 ユーザー名 : ky ' ' Range("D8:D22").Select Application.CutCopyMode = False Range("D8:D22").AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Range( _ "B26:B36"), Unique:=True Range("A26").Select End Sub 以上よろしくお願いいたします。

  • Excelマクロ オートフィルタ可視領域の特定部分をコピー

    何方か、回答をお願いします。 下記もマクロは 、B列:C列(B1:C1はタイトル)をオートフィルタに掛けて フィルタに掛かった一番上のデータをコピーして貼り付けているマクロですが。 やりたいことは、B1:C1のタイトルとフィルタに掛かった可視領域の一番上の データ(オートフィルタに引っかからないでデータが無い場合も有り)をコピー して貼り付けたいのですがどの様なコードを書けば良いのでしょうか。? Sub フィルタ() Range("B1:C1").Select Selection.AutoFilter Selection.AutoFilter Field:=2, Criteria1:=">=1e-6" Range("B1").CurrentRegion.Select On Error Resume Next Selection.SpecialCells(xlCellTypeVisible).Areas(2).Rows(1).Select Selection.Copy Range("K15").Select ActiveSheet.Paste Application.CutCopyMode = False Selection.AutoFilter End Sub

  • フィルタオプションから連番をつけたい

    フィルタオプションの設定からデータを抽出  -表示されたデータの連番を振る という作業のマクロを作りたいので、ご教授願います。 現況は以下のとおり、業種毎の抽出までをマクロ設定しています。 リストsheetのA列に、抽出後表示のみの連番を表示させる作業を現VBEに続け、一括処理することが希望です。 A列の値は、抽出毎に変わります。 =リスト=   A    B     C 1 No. 事業所名  業種 2    ○1○社   電気 3    ○2○社   サービス 4    ○3○社   ガス 5    ○4○社   サービス 6    ○5○社   電気 7    ○6○社   電気 =検索条件=   A 1 業種 2 電気 3 ガス 4 サービス =VBE= Range("C1:C7").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _ Sheets("検索条件").Range("A1:A4"), Unique:=False SUBTOTAL(3,B2:B2)・・・も試しましたが、オートフィルタによる抽出には有効ですが、上記VBEの場合は無効でした。 また、VBEによる抽出後、SUBTOTALを改めてペーストすれば有効となることは確認しましたが、リスト使用者は、より簡単な操作を必要とします。 質問の検索結果、類似した質問は多々ありましたが、意図するところと若干ずれていたり、低レベルの私では回答内容が理解不能という、情けない結果となり、質問を立ち上げるに至りました。 よろしくお願いします。