• ベストアンサー

オートフィルタ抽出データに連番をつけるマクロ

オートフィルタで抽出したデータに連番をふりたいと思っています。このサイトで調べた結果、オートフィルタをかけてのオートフィルでの連番入力はできないと知りました。 現在しようとしているのは   A  B  C 1 クラス NO 氏名   2 1    ○△ 3 2    □× 4 1    ★♪ というデータがあり、項目にオートフィルタをかけている状態です。クラスを抽出した場合にそのクラスでの通し番号(連番)を付けたいのです。SUBTOTAL関数だと、連番が表示されるのはオートフィルタで抽出している間だけです。SUBTOTALでつけられた連番を、オートフィルタを解除しても残しておくにはどうしたらよいでしょうか。やはりコピー&ペーストしかないのでしょうか?似たような質問が多々ありますが、コピー&ペースト以外の方法をご存知の方、どうか教えて下さい。

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

  • ベストアンサー
  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.3

#01です >したがってオートフィルタで抽出を解除すれば同じ通し番号がクラス数分あることになります。 これは最初から書いていただきたかったですが(^^;、それならこのようなマクロでもできます。なお#02さんのご指摘のようにSpecialCellsを用いる方が処理が速くなりますが、手抜きして元のマクロを修正するにとどめます。 Sub Macro4() Dim idx, cnt As Long Application.ScreenUpdating = False For idx = 2 To Range("A65536").End(xlUp).Row   If Rows(idx).Hidden = False Then     cnt = cnt + 1     Cells(idx, "B").Value = cnt   End If Next idx Application.ScreenUpdating = True End Sub

noa8998
質問者

お礼

説明がたりず分かりにくくてすみません。助かりました。 ありがとうございまあした。

その他の回答 (2)

回答No.2

http://www.moug.net/skillup/nksw/nksw02-01.htm .SpecialCells(xlCellTypeVisible) フィルタ後に 表示されているセルだけ選択する時は 可視セル を選択することをすすめます 全ての行を処理すると時間がかかりますが 可視セルなら検索結果のセルだけ処理できます フィルタ後 for each myR in range("A1:A500").SpecialCells(xlCellTypeVisible) msgbox myR.value next 最終行 = Range("A" & activesheet.rows.count).End(xlUp).Row 65536行以上のシートでも共通で使うことができます

noa8998
質問者

お礼

ありがとうございます。とても役に立ちました!!

  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.1

表示されている行のB列に連番を振るマクロサンプルです。 質問文からではどのような使い方をするのかが分かりませんし、前に振った通し番号はどうすればよいのかもわかりません。ですから期待通りの動きはしないかもしれませんが、とりあえずヒントにはなるかもしれません 以下のマクロをALT+F11でVBE画面を開き、左上のVBA Projectでシート名を右クリックし「挿入」→「標準モジュール」で表示される画面に貼り付けて下さい。マクロの実行はワークシート画面に戻ってALT+F8でマクロ一覧を開き、マクロ名を選択して「実行」ボタンです。 Sub Macro4() Dim idx, cnt As Long For idx = 2 To Range("A65536").End(xlUp).Row   If Rows(idx).Hidden Then     Cells(idx, "B").ClearContents   Else     cnt = cnt + 1     Cells(idx, "B").Value = cnt   End If Next idx End Sub

noa8998
質問者

補足

使い方としては、氏名にクラス番号を割り振った後、そのクラスごとにオートフィルタで抽出し、マクロで通し番号をつけるといった使い方です。なので、つけた通し番号はそのまま残したいと思います。したがってオートフィルタで抽出を解除すれば同じ通し番号がクラス数分あることになります。

関連するQ&A

  • オートフィルタのデータに連番をつける時。

    オートフィルタのデータに連番をつける時。 オートフィルタで抽出したデータに連番をつける時は、 subtotal関数を使う方法しかないのでしょうか? これが一番簡単な方法なのでしょうか? エクセル2007には ‘アウトライン’という機能がありますが、 これを使えば連番をだすことはできるのでしょうか? 挑戦してみたのですが、私にはできませんでした。 エクセル2003・2007においてsuubtotal関数以外で 方法があれば教えてください。 どうぞ宜しくお願いします。

  • EXCEL オートフィルタ 連番について

    以下のような4セットごとの連番を追加したいのですが、 通常の状態ですとセルを数値型にすればオートフィルで問題ないのですが、オートフィルタを使用しているとうまくいきません。 SUBTOTAL関数で可能でしょうか? 良い方法があるようでしたらお願いします。 1 1 1 1 2 2 2 2

  • 《エクセル2000》オートフィルタで寄せたものに連番を振りたいのですが

    オートフィルタの条件で抽出したデータのみ連番を振りたいのですが、上から1、2、3と入力し後はオートフィルで入力しようとしても全部1になってしまい、うまくいきません。 どうすればいいのでしょう?

  • Excelでフィルタをかけた状態でオートフィルタで連番を振りたい

    Excelでオートフィルタを設定し、抽出したデータがあります。(ですので表示範囲があります)その抽出したデータのある列に連番を振りたいのですが、非表示ににゅうりょくされてしまうためうまくできません。 またオートフィルタで抽出した範囲の可視セルをコピーすることはできても、再度貼り付けることもうまくできません。 何か方法はないでしょうか。

  • オートフィルタで抽出した行にだけ連番を振りたい

    500件程度の製品データに対して、製品1、製品2、製品3でフィルタ抽出後、製品1に該当する行にだけ、1~連番を振りたいのですが・・・普通に連番コピーしますと、隠れている製品2・3のセルを含めた状態で、連番が振られてしまいます。 これを回避する操作法はないのでしょうか? 例えば、ツールメニューや書式設定メニューから、「可視セルにのみ連番コピーする」などと、指定しておく事は出来ないのでしょうか?

  • オートフィルタで抽出されたデータをうまく印刷したい

    Excel2003で作ったA1:AU1666にデータが入っている表があります。 オートフィルタで、ある項目が○のものだけを抽出し、その部分だけ印刷したいのですが、 印刷しようとすると細かく改ページがされてしまします。 青い線を動かそうとしても動かせません。 そこで、可視セルだけをコピーして他のシートにでも貼り付けようとしたのですが、 「結合されたセルの一部を変更することが出来ません」となりコピーできません。 結合を解除しようとも思ったのですが、結合されている部分とされていない部分がたくさんあり、一気に解除ができません。 オートフィルタを使った表の見えている部分だけをうまくページに収めることは出来ないのでしょうか?

  • エクセル データをオートフィルで抽出後乱数

    エクセルのデータでオートフィルを使用し、ある程度絞り込んだものから ランダムなデータを抽出したいのですがやっていてもっとうまくやる方法はないかと思い 質問させえていただきました。 私が考えた方法はオートフィル後のデータにsubtotal関数を使用し上から順位をつけ 他のワークシートに乱数表(rand関数とrank関数を併用)を用意するというのもです。 件数の少ない条件ですとそれでもかまわないのですが、1000件中300件抽出という風になってくると 手間がかかりすぎてしまいます。 もっと簡単にできる方法はないでしょうか? データ自体は一行が1つのデータとなっており大体3万行ぐらいです。

  • 《エクセル2000》オートフィルタとSUBTOTALを使ってデータのチェックをしたいのですが…

    いつもお世話になっています。 一行一件で大量のデータが打込まれ、並びに列の最下部から2行あけた後に、SUBTOTAL関数を入れてあるシートがあります。 タイトルのとおり、オートフィルタとSUBTOTALを使ってデータのチェックをしたいのですが、オートフィルタを選択すると、SUBTOTAL関数が入力されているセルまでもがフィルタをかける対象になってしまいます。 おそらくは「フィルタオプションの設定」という所をいじればいいのだと思いますが、「リスト範囲」という所のセル番号を変えてOKを押すと、フィルタそのものが外れてしまいます。(現在はSUBTOTAL関数が入力されているセルも「リスト範囲」の中に入ってしまっています) SUBTOTAL関数が入力されているセルを、オートフィルタの対象にしないためにはどうすればいいでしょうか。

  • オートフィルターで抽出されたデータの参照方法について

    1000件以上のデータをA,B、C列にオートフィルターをかけて抽出されたデータのA,B、C列およびD列目の値を参照する式を組みたいのですが、当然のことながらオートフィルターをかける都度、表示されるセル番地が変わるので式がくめません。 多分、マクロでコピーしてどこかにペーストすればいいのでしょうが、まったくわかりません。お教えください。

  • オートフィルタでデータ抽出したものをコピー

    こんにちは。 excelでオートフィルタでデータを抽出したものをコピーし違うsheetに貼り付けると、欲しいデータだけでなくすべてのデータが貼り付いてしまいます。欲しいデータだけ貼り付けるやり方を教えてください。 よろしくお願いいたします。

専門家に質問してみよう