• ベストアンサー

オートフィルター抽出時データ無い列、行を非表示

こんばんは、下記のURLで教えて頂いた方法で大きなマトリックス(A1:CR6000)が出来ました http://okwave.jp/qa/q7463440.html 質問: タイトルは、行1、行2とタイトルが入っていて、データ領域(A3:CR6000)まであり、データ量は増えて行きます。 オートフィルターで、A列データ抽出時、B3:CR***範囲内でデータの無い列、行があります、 タイトル列も含めて、列、行を非表示にする事は可能でしょうか?ご教授下さい

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

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.1

こんばんは! 前回投稿した者です。 実は投稿後気になっていたコトが今回の質問だと思います。 前回のコードでは1行に1データ表示になってしまいますので、 あまりに空白セルが多くなりすぎているのではないかと・・・ もう一度コードを載せておきます。 今回もAlt+F11キー → 画面左下の「This Workbook」をダブルクリックして ↓のコードをコピー&ペーストしてマクロを試してみてください。 ※ 単純に空白セルを削除するだけなら簡単なのですが、 Sheet2のB列以降に1データでもあればその行の空白セルは残しておく! という作業が必要になると思います。 そこで今回はSheet3を作業用のSheetとして使っていますので、 Sheet見出しには「Sheet3」まで表示しておいてください。 Sheet3はまっさらなSheetだとします。 Sub test2() Dim i, j, k, L, M As Long Dim ws1, ws2, ws3 As Worksheet Set ws1 = Worksheets("Sheet1") Set ws2 = Worksheets("Sheet2") Set ws3 = Worksheets("Sheet3") Application.ScreenUpdating = False k = ws2.Cells(Rows.Count, 1).End(xlUp).Row j = ws2.Cells(2, Columns.Count).End(xlToLeft).Column If k > 2 Then ws2.Rows(3 & ":" & k).ClearContents End If If j > 1 Then Range(ws2.Cells(2, 2), ws2.Cells(2, j)).ClearContents End If For i = 2 To ws1.Cells(Rows.Count, 1).End(xlUp).Row If WorksheetFunction.CountIf(ws2.Rows(2), ws1.Cells(i, 3)) = 0 Then ws2.Cells(2, Columns.Count).End(xlToLeft).Offset(, 1) = ws1.Cells(i, 3) End If If WorksheetFunction.CountIf(ws3.Columns(1), ws1.Cells(i, 1)) = 0 Then L = L + 1 ws3.Cells(L, 1) = ws1.Cells(i, 1) End If Next i j = ws2.Cells(2, Columns.Count).End(xlToLeft).Column Range(ws2.Cells(2, 2), ws2.Cells(2, j)).Copy Destination:=ws3.Cells(1, 3) For L = 1 To ws3.Cells(Rows.Count, 1).End(xlUp).Row For j = 3 To ws3.Cells(1, Columns.Count).End(xlToLeft).Column For i = 2 To ws1.Cells(Rows.Count, 1).End(xlUp).Row If ws1.Cells(i, 1) = ws3.Cells(L, 1) And ws1.Cells(i, 3) = ws3.Cells(1, j) Then ws3.Cells(Rows.Count, j).End(xlUp).Offset(1) = ws1.Cells(i, 2) End If Next i Next j M = ws3.UsedRange.Rows.Count j = ws3.Cells(1, Columns.Count).End(xlToLeft).Column Range(ws3.Cells(2, 2), ws3.Cells(M, 2)) = ws3.Cells(L, 1) Range(ws3.Cells(2, 2), ws3.Cells(M, j)).Cut Destination:= _ ws2.Cells(Rows.Count, 1).End(xlUp).Offset(1) Next L For k = ws2.Cells(Rows.Count, 1).End(xlUp).Row To 3 Step -1 If WorksheetFunction.CountA(ws2.Rows(k)) = 1 Then ws2.Rows(k).Delete End If Next k ws3.Cells.Clear Application.ScreenUpdating = True End Sub ※ For~Nextを多用していますので、時間がかかるかもしれません。 ※ 質問では「タイトル行・列も含めて非表示・・・」となっていますが、タイトル行はそのままにしています。 お役に立ちますかね?m(_ _)m

okamoto6855
質問者

お礼

tom04さん いつもお世話になります、有り難うございます早速実施した所、思い通りの物が出来ました、ありがとうございました。

関連するQ&A

  • オートフィルタで抽出したデータの行を削除(VBAで記述)

    Excel2000を利用しています。 VBAで、オートフィルタを利用した作業を記述したいと思っています。 データは一行目にタイトルが入っています。 オートフィルタで抽出したデータを その行まるまる削除したいと思っています。 その時、タイトル行(1行目)を除いて オートフィルタで抽出された行のみ選択して 削除する、という場合、どのように記述すればよいのでしょうか。 自分では全然分からないので 教えてください、よろしくお願い致します。

  • エクセル2007で行にオートフィルタをかけたい

    エクセル2007で行データにオートフィルタをかけたいのですが できません. 範囲をどのように選択してもかならず列データにオートフィルタが かかってしまうのですが どうにかして行データにオートフィルタをかけたいです. どなたかご教授願います

  • エクセルのオートフィルタでのデータ抽出&カウント

    エクセルのローデータでのオートフィルタでのデータ抽出&カウントで困っています。 A列にNo.、B列にデータB、C列にデータC、D列にデータDがあるとします。 それぞれの列に1~9までの数字があり、 それぞれの列、 データの一番下(正確には1行開けて)にはSUMやCOUNTIFなどの関数(計算式)が入っています。 で、これをフィルターにかけ抽出した際、この抽出したデータのみで計算の値を表示したいのですが、 やってみると 全データの計算の値で表示されてしまいます。 どうすればよいのでしょうか? 大変困っています。 よろしくお願いいたします。

  • Openofficeのオートフィルタ使い方について

    Openoffice3.2を使っています。 ■質問 オートフィルタを掛けて条件で 抽出した行の値をフィルハンドルドラッグでデータをコピーしたところ フィルタをすべてに戻したところ フィルタ抽出されていないはずの(表示されていなかった)行にまで データがコピーされてしまいます。 急ぎの処理が入りうまく使えず困っています。 どうかご存知の方ご教授お願いします。 ■関係あるかどうか解りませんが、フィルタを使う前にした操作です。 フィルタを使おうとしたところ1行使えなかったので データ→範囲の指定から、データの範囲をデータのある全列を指定した。

  • Excel2003 オートフィルタで「*」を抽出

    Excel2003でオートフィルタを使って文字列「*」を含む行を抽出したいのですが、どのようにすれば抽出できますか?

  • Excelのオートフィルタでデータ抽出するマクロについて

    オートフィルタで指定した期間のデータ抽出のマクロを作成しているのですが上手くいきません。 例えばA列に 10月29日 11月1日 11月3日 11月5日 と日付を入力しており、B列、C列にデータを入力していたとして D列1行目に10月31日、D列2行目に11月4日と入力し D列1行目からD列2行目までと指定したデータを抽出するマクロを教えていただけませんか。 マクロ初心者で、困っております。どうかよろしく御願いします。

  • オートフィルタで抽出したデータの切り取り

    エクセルのオートフィルタ機能でデータを抽出した時、 そのデータを切り取ると抽出したデータの最初の行から最後の行までが切り取られてしまいます。 (表示(抽出)されていないデータも一緒に切り取られてしまう) 抽出されたデータだけを切り取る方法はありませんか? コピーではなく切りとっていきたいのです。

  • Excel2003でオートフィルタを使う場合

    Excelをデータベース的に使用している場合,オートフィルタの機能はとても便利だと思います。 しかし ▽のマークが必ず先頭行にできますよね。 例えば 見た目を綺麗にするために,A2~K4の行までタイトル行を作成下とします。 そして データがA5~K100まであるとします。 この場合,オートフィルタを使うと,1行目に▽マークができるため データの抽出を行うと タイトル行が見えなくなってしまいます。 なんとかして タイトル行を残したままで データの部分だけを抽出するようにできないでしょうか? よろしくお願いします。

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

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

  • EXCELでオートフィルタが使えないのですが・・・

    外注先から届いたデータをオートフィルタで日付を抽出しようとしたら、データ→フィルタをのぞくと、肝心な「オートフィルタ」がグレーになってて、機能が使えない状態になっています。 データは1行目に表題、2~4行目にかけて、タイトル行が作られています。 2行目→              支給 3行目→            貼合  注入 4行目→ ロットNo.  日付   日   期限   大板  処理数 良品 データ→ Q3118G  2/26  2/23  3/16   20   1920   1851 こんな感じなのですが、なぜかフィルタがかかりません。 2~3行目のタイトルを削除しても、やっぱりダメでした。 Win98 EXCEL2000使用です。宜しくお願いします。

専門家に質問してみよう