• ベストアンサー

Excel:オートフィルタ機能について質問です

Excel2000のオートフィルタ機能を利用して、1シート3~4万件あるデータの集計などをしています。 その中で以下の点についてお教えください。 1.フィルタリングしてセルが飛び飛びに表示された状態で、ある列に1から順に連番を振りたいのです。 たとえばフィルタリングして A1 A3 A7 A8 A13 : のように絞り込まれたセルに、上から順に01,02,03,04,05...というように番号を振りたいのですが、オートフィル機能では間のセルまで入ってしまうし、=A1+1 のような関数でもやはり間のセルが邪魔です。 フィルタをかけた状態で連番を振ることはできますでしょうか。(書式は数値でも文字列でも構いません) 2.フィルタリングした状態で、連続した複数のセルをコピー&「形式を選択して貼り付け」をしたら、間に隠れているセルに値が入ってしまいます。 フィルタをかけて表示されているセルにのみ貼り付ける方法はありますでしょうか。 以上、よろしくお願いいたします。

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.4

こんばんは。 1. は式でも可能ですが、4万行にもなると重過ぎます。 2. は、VBA以外には不可能だと思います。 1. 最終列の検査行は、B列になっています。 Range("B65536")の部分を適宜替えてください。 '<シートモジュールか標準モジュールでお使いください。> Sub SkipNumbering() Dim i As Long, k As Long Dim lastrow As Long Const c As Long = 1 '列数を入れてください。 例:1 = A列 lastrow = Range("B65536").End(xlUp).Row 'B列の最終行を調べます k = 1 Application.ScreenUpdating = False For i = 1 To lastrow If Cells(i, c).EntireRow.Hidden = False Then   Cells(i, c).Value = k   k = k + 1 End If Next  Cells(1, c).Resize(lastrow).NumberFormatLocal = "00"  Application.ScreenUpdating = True End Sub 2. Visual Basic Editor の画面を開けたら、 ツール-参照設定で、Microsoft Forms x.x Object Library (x.x は数字が入ります)にチェックを入れてください。 挿入-標準モジュールをクリックしてから、以下のものを貼り付けてください。 一応、ショートカット設定をしましたので、このショートカットを実行すれば、Alt + C で、貼り付けできます。なお、貼り付けられるデータは、Text(文字、数字の定数) データに限ります。他の表示形式などは貼り付けられません。 '<標準モジュール> Sub SkipCopy()  '要 参照設定 Microsoft Forms x.x Object Library  Dim myData As Variant  Dim i As Long, j As Long, buf As String  Dim CB As DataObject  Set CB = New DataObject  On Error Resume Next  With CB  .GetFromClipboard  buf = .GetText  End With  On Error GoTo 0  If Len(buf) = 0 Then MsgBox "クリップボードが空です。", 16: Exit Sub  myData = Split(buf, vbCrLf)  Do  With ActiveCell   If .Offset(i).EntireRow.Hidden = False Then   .Offset(i).Value = myData(j)   j = j + 1   End If   i = i + 1  End With  Loop Until j > UBound(myData) End Sub ' Sub SetMyShortCut()  'ショートカット設定  'Alt + C  Application.OnKey "%c", "SkipCopy"  Application.OnKey "%C", "SkipCopy" End Sub ' Sub SetOffMyShortCut()  'ショートカット解除  Application.OnKey "%c"  Application.OnKey "%C" End Sub

Stella_Maris
質問者

お礼

ありがとうございます。 VBAは「見たことがある」程度でやったことはないので、これから教えてくださった内容を元に挑戦します。 取り急ぎ御礼まで…

その他の回答 (6)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.7

こんにちは。 >Alt+Cを押しても何事も起こらないんです。 メニューからマクロ-マクロ-「SetMyShortCut」(Visual Basic エディタ画面だったら、カーソルを、そのコードの中に置いて、F5を押せば、)設定されます。このマクロで、ショートカットはブックに登録されます。 後は、ショートカットで、マクロが起動します。 使い方: 最初に、コピーされる範囲を選択し、Ctrl + C で、範囲をコピーします。そうすると、クリップボードにデータが入ります。 そして、貼り付けされるところの一番上の場所に、セルポインターを置いてから、貼り付けに、登録したショートカット「Alt + C」 を使います。 あと、もう少しですから、投げ出さないで、がんばってくださいね。 なお、ショートカットを外すほうは、 SetOffMyShortCut です。 Alt + C を Alt + V に変えたい場合は、  Application.OnKey "%v", "SkipCopy"  Application.OnKey "%V", "SkipCopy" と中のコードを書き換えてあげます。

Stella_Maris
質問者

お礼

ありがとうございます!できました!! 何度も何度もお世話をおかけいたしました。 たいへん助かりました<(_ _)>

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.6

こんにちは。 >CB As DataObject >のところで >「コンパイルエラー: > ユーザ定義型は定義されていません」 >というエラーが出ます… #4 に書かれているように、 # '要 参照設定 Microsoft Forms x.x Object Library #Visual Basic Editor の画面を開けたら、 #ツール-参照設定で、Microsoft Forms x.x Object Library (x.x は数字が入ります)にチェックを入れてください。 参照設定をしないと、そのようなエラーが出ます。データオブジェクトという入れ物(ユーザーフォームの中のツール)が必要なのですね。

Stella_Maris
質問者

お礼

ありがとうございます。すみません、エラーは私の設定ミスでした…(チェックを入れたつもりで別のに入れてました…)申し訳ありません。 で、エラーは出なくなったんですが、コピー&ペーストができません… Alt+Cを押しても何事も起こらないんです。 値のみ貼り付けもできないし… 貼り付けるのは文字列にして1列でやってます。 何故なんでしょう… 何度も申し訳ございません<(_ _;)>

Stella_Maris
質問者

補足

一応念のため、使用しているPCは富士通のノート型 FMV-830NU/Lで、OSはWindowsXPSP2です。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.5

#4 の 補足です。 2. かならず、1列でのみの貼り付けにしてください。

Stella_Maris
質問者

お礼

ありがとうございます。 やってみます。

Stella_Maris
質問者

補足

すみません、やってみたのですが CB As DataObject のところで 「コンパイルエラー:  ユーザ定義型は定義されていません」 というエラーが出ます… 色々調べてはみたのですが、よく分からなくて…アドバイスをお願いしますm(_ _;)m 教えてちゃんですみません。

  • shiotan99
  • ベストアンサー率68% (140/203)
回答No.3

こんにちは~ 1についてですが、No.2さんのように SUBTOTAL関数を使えばできますが、 No.2さんの式では不具合が発生すると思いますよ。 →最終行に条件に一致しないものが表示される。 これを回避するためには =IF(B2="","",SUBTOTAL(3,$B$2:B2)) のようにしてください。 ↓フィルタ実行時に連番を表示させたい-SUBTOTAL関数 http://www.relief.jp/itnote/archives/000439.php ↓オートフィルタで絞り込んだ件数を表示する http://www.officetanaka.net/excel/function/tips/tips21.htm 2はわかりません・・。

Stella_Maris
質問者

お礼

ありがとうございます。 参考URLも拝見して、よく理解できました。 助かりました。

  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.2

A2=SUBTOTAL(3,$B$2:$B2) 上記をコピーで出来ませんか

Stella_Maris
質問者

お礼

ありがとうございます。1番はできました! あとはこの関数を2番のように「値だけ貼り付け」したいんですが…やはりフィルタを解除しなければ無理でしょうか…

  • bazz11
  • ベストアンサー率17% (6/34)
回答No.1

こんにちは。 早速ですが、 フィルタで抽出した範囲を、そのまま別シートにコピーすれば、間のセルは抜かれたままでコピーできるはずですが。 これでどーでしょうか?

Stella_Maris
質問者

お礼

ありがとうございます。 すみません、説明不足でした。 2番は例えば、そのシートでフィルタリングした状態で、別のシートから複数セルを貼り付けたり、同じくフィルタリングした状態で関数を埋め込んだのを、その状態のまま(フィルタを解除せずに)値だけ貼り付けたりしたいのです。 できますでしょうか。

関連するQ&A

  • オートフィルタ機能について教えてください。

    オートフィルタ機能はあくまでその列に入力した数字(数値)しか表せないのでしょうか? その列を空白にして、オートフィルタ機能をクリックしたとき数字が表示されてその数字を空白のセル内に入力したいのですが・・・。 可能ですか?

  • Excel2003 オートフィルタで「~で始まる」が機能しません

    いつもお世話になってます。 エクセルのオートフィルタ機能で特定の条件を満たす値(数値)を抽出したいのですが なぜか全く機能しません。 例えば、「123456」という文字列が縦列の中に含まれていて 「▼」をクリックして「オートフィルタオプション」より、 123「で始まる」値を抽出したいんですがHITしません。 しかし、123456「と等しい」であればHITするんです。 同様に、123456「より大きい」や123456「以上」もHITします。 セルの表示形式では「数値」になってます。 「標準」にしても「文字列」にしても同様の結果です。 「123456と等しい」のに123で始まらないの!? とグチを言いたくなるくらい困ってます・・・ どなたか、ヒントだけでもいいのでアドバイスお願いします。

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

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

  • エクセルのオートフィルタなのですが。

    オートフィルターで表示した(可視セル)のみをコピーして、別の列にそのデータを貼り付けたいのですが、貼り付けると、オートフィルターで非表示になっているデータまでも張り付けされて困っております。 どのようにしたら解決できますか? ご存知の方いましたら教えてください。

  • Excel2000のオートフィルターについて

    Excel2000のオートフィルターの機能で,オートフィルターオプションが ありますが,この機能を使って,特定の文字を含むデータのみを表示させ たいと思っています。 具体的には ------- 例 123 456 321 222 ------- とあった場合,オートフィルターオプションで,「3を含む」 とやった際に ------- 例 123 321 ------- としたいのですが,半角の数字を認識せず全て消えてしまいます。 セルの書式を標準から文字列に変えても同様です。 全角の数字は認識します。半角であっても英字は認識するようです。 どなたか解決方法をご存知のでしたらよろしくお願いいたします。

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

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

  • Excelのオートフィルタのことで質問です。

    Excelのオートフィルタのことで質問です。 リストは、A列(月)、B列(名前)、C列(売上)、D列(%)です。年度集計でオートフィルタを使い、名前を重複させずに抽出させ、かつ%順に並べかえたいです。 ちなみに重複する名前の売上と%は合計させて並べ変えたいのですが、うまくできません。 マクロは使ったことがないのですが、どのようにしたらいいでしょうか?

  • Excel2003 でオートフィルターの動きがおかしい

    Excel2003 SP2を使っています オートフィルタでは(1)ドロップダウンリストから抽出したいデータを指定する方法と、(2)直接抽出したいデータの入っているセルを選択してツールバーのオートフィルタのボタンを押す方法があります。 (1)の方法で指定した場合には問題ないのですが、(2)の方法でやると、たまに指定した列ではない別の列にフィルターがかかってしまう場合があります。たとえばE12のセルを選択してオートフィルボタンを押すと隣のF列にフィルタがかかり、F列のフィルタオプションを見るとE12のデータが指定されていたりします。いつもおこるわけではなく、またいつも隣の列とは限らず2つ隣の列にフィルターがかかるときもあります、データ量の多いファイルのときに起き易いようなきがします。 これはExcelのバグなのでしょうか、それとも操作方法になにか問題があるのでしょうか、よろしくお願いします。

  • Excel2007のオートフィルタ機能について

    対象ソフト:Excel2007 オートフィルタで絞ったデータを「数値と値のクリア」でクリアすると、絞ったデータのみがクリアされるはずが、絞ってしないデータまでクリアされてしまうことがあります。 見つけたのは以下のパターンです。  A B C D E F 1  ● 2  ×  3 ● 【現象が出るケース】 1.先頭行にオートフィルタを設定 2.オートフィルタでB列の●を選択 3.●のセルを選択し、「数値と値のクリア」を実行 ⇒B1~B3までのデータがすべて消えてしまいます。 【現象が出ないケース】 1.先頭行にオートフィルタを設定 2.オートフィルタでB列の×を選択、個数を確認します 3.オートフィルタでB列の●を選択 4.●のセルを選択し、「数値と値のクリア」を実行 ⇒B2の×は残っています。 この現象は故意的なのでしょうか? それともバグなのでしょうか? どちらにしても、パターンを覚えておかないとデータを操作する際に、正確なリストを作成できずに困っております。 解決法や良い対処策があれば教えてください。

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

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

専門家に質問してみよう