- ベストアンサー
エクセルでのオートフィルタに関して(マクロ)
1行目にタイトルがある表がありましてその表に オートフィルタを掛けて条件を複数指定して検索・・・ここまで手作業。 その後マクロでヒットした行をコピーして別のシートにコピーしたり、ということを行っています。 もともとの表のデータ数は日々増減していて ほしい行の行数も毎回変わってきます。 検索した行をコピーするために選択すると Rows("2809:2809").Select こんな具合に 行番号で指定されるのでデータ数が増減すると うまくいきません。 検索条件を指定して検索した行を うまくマクロで指定することは出来るのでしょうか? 良い方法がありましたら御教授願います。 もう一点ですが 自動記録でオートフィルタの画面を開いたままでは「記録終了」できないですよね? マクロでフィルタ画面を開いて 検索条件を指定するところから手作業でするのは可能でしょうか? あわせてよろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
>検索した行をコピーするために選択すると 見えている行だけ、コピーしたいということでしょうか こうすれば見えている行だけ、コピーされます。 Rows("1:2000").Select Selection.SpecialCells(xlCellTypeVisible).Select Selection.Copy また、データの最終行を求めるには、次のようにします。 Dim 最終行 As Long 最終行 = Range("A65536").End(xlUp).Row Range("A1:IV" & 最終行).Select Rows("1:" & 最終行).Select
その他の回答 (3)
- ki-aaa
- ベストアンサー率49% (105/213)
確かに、表示されたセルのみのコピーをし、それを貼り付けようとすると、コピーしたセルの挿入は、できないみたいですね。 それをやるには、Sheet1から一旦Sheet3にでも貼り付けて、それをSheet2に、貼り付けるなんて方法しか思いつきません。 こんな方法しか思いつかなくて、すみません。
お礼
いえいえ、たびたびの御教授 ありがとうございました! 素人考えながら はるかに難しい事が出来るエクセルなのに この程度の事が出来ないのも 「なんだかな」って気持ちがします(苦笑) とりあえず、 抽出して選択(マクロ)→シート2に挿入(手作業) →以下の作業(マクロ)ってことにしてお茶を濁しました。 ほんとうにありがとうございました。
- web2525
- ベストアンサー率42% (1219/2850)
>>検索した行をコピーするために選択すると >>Rows("2809:2809").Select こんな具合に >>行番号で指定されるのでデータ数が増減すると >>うまくいきません。 選択範囲の左上がアクティブセルの状態で、 Range(Selection, Selection.End(xlToRight)).Select Range(Selection, Selection.End(xlDown)).Select マクロの記録のさいには、 [shift]+[ctrl]+[→] → [shift]+[ctrl]+[↓]。 あくまでデータが埋まっていることが条件。 >>マクロでフィルタ画面を開いて 検索条件を指定するところから手作業でするのは可能でしょうか? フィルターオプションを使用したマクロのほうが簡単なのでは?
お礼
もともとの質問が分かりにくい表現で 大変申し訳ありませんでした。 データが始まる部分からデータの最後部分までの 選択するマクロ記述方法だったのですね ありがとうございました
- RZ350RR
- ベストアンサー率27% (444/1615)
>>1行目にタイトルがある表がありましてその表に >>オートフィルタを掛けて条件を複数指定して検索・・・ここまで手作業。 >>その後マクロでヒットした行をコピーして別のシート>>にコピーしたり、ということを行っています。 ここまでをマクロ化してはどうですか? >>行番号で指定されるのでデータ数が増減すると うまくいきません。 行番号が増減するからマクロで指定できないことはありません。発想の転換をかけてください。 Execl2000であれば、行は最大65536行です。 エンドが決まっているのですから、MAXから減算でデータが始まる行(データの最終行)を見つければ データ行が可変でも設定できます。 自動記録でオートフィルタなどの設定をするとマクロ動作がとても重くなります。2秒で終わる物が1時間以上かかったりします。 業務内容が見えませんが全部マクロ化できるような気がしますけど。。。
補足
ありがとうございます。 もともとのデータが増減する・・・ 最終行が追加されていくだけではなく 途中のデータも日々削除されていくのです。 (データ数は数千くらいです( このような状態でもおっしゃっている方法が 可能なのでしょうか? 検索条件を指定してほしいデータは見つかりますが そのデータの行番号が毎回変わっても そのデータ行を選択するマクロ記述が出来る ってことですよね? 最初の質問が分かりにくくて申し訳ありませんでした。
お礼
ありがとうございます データを選択するところまでうまくいきました。 シート1で抽出したデータを選択して シート2にコピーしたいのですが、 シート2にはすでにいくらかデータが 入力されているので 最初の行に貼り付けたくて Sheets("Sheet2").Select Rows("1:1").Select Selection.Insert Shift:=xlDown こう記述したら前に Rows("1:2000").Select Selection.SpecialCells(xlCellTypeVisible).Select Selection.Copy で選択した部分はキャンセル?されてしまい シート2の1行目には空白行しか貼り付けされません このような際はどうしたらよろしいでしょうか? たびたび申し訳ありませんが よろしくお願いします