みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

《エクセル2000》非表示になっている行を一括選択して削除したい

表示・非表示行が混在しているシートが40強あります。
自分で作ったファイルではないので勝手がわからず、今は一行一行非表示行がないかを目で確認して、表示→削除という手順を踏んでいます。
例えば「表示行と非表示行を入れ替える」ような機能はありますか?

投稿日時 - 2003-10-15 11:17:02

QNo.680170

困ってます

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

シートが40もあるのであれば、いちいちコピーすれば、80にもなりますよ。
どうも直接非表示行を削除した方が、手っ取り早いとおもいますが、如何でしょうか。

下記のマクロを実行すると、全シートの非表示行を削除します。

一応、マクロの設定方法を書いておきます。

1.Alt + F11 で VBE(Visual Basic Editor)を開きます。
2.VBE のメニューから[挿入] -->[標準モジュール] を指定します。
3.モジュールウィンドウに下記コードをコピーして貼り付けます。
 コードの2行目をデータの最終行を多めに指定します。(1000とか10000など)
4.Alt + Q (または、右上隅の×)でウィンドウを閉じ、シートに戻ります。
5.このマクロを保存して使用する場合は、メニューから[ツール]-->[マクロ]-->
 [セキュリティ]で「セキュリティレベル」を「中」にして[OK]します。
6.実行するときは、Alt + F8 (メニューから[ツール]-->[マクロ]-->[マクロ])で
 「DelHiddenRow」を指定し、[実行]ボタンを押します。

これで如何でしょうか。

Sub DelHiddenRow()
Const ChkMaxRow = 1000 ' <--- 非表示をチェックする最終行を指定
Dim Rw As Long
Dim N As Integer
For N = 1 To Worksheets.Count
  With Worksheets(N)
    For Rw = ChkMaxRow To 1 Step -1
      If .Rows(Rw).Hidden Then .Rows(Rw).Delete
    Next Rw
  End With
Next N
End Sub

投稿日時 - 2003-10-15 13:45:55

お礼

こんにちは。
なるほど…手作業にした方が早いですか(^^;)了解です。

データベースソフトだと非表示レコードだけを簡単に選択できたりするので、もしかしたらエクセルでも似たようなことをできるのかもしれないと思い、お気楽に質問させていただきました。
ご回答をどうもありがとうございました。

投稿日時 - 2003-10-15 14:50:34

ANo.1

VBAが必要ですが、表示行/列のみをコピーし、別のシートに貼り付ければ、結果的に非表示行/列は削除されます。

一例ですが、Sheet1の表示行/列をSheet2に貼り付ける場合、下記の要領です。

Sub Test()
With Application
.Worksheets(1).UsedRange.SpecialCells(xlCellTypeVisible).Copy
.Worksheets(2).Paste
End With
End Sub

投稿日時 - 2003-10-15 11:58:54

補足

こんにちは。
実は当方マクロは全くの初心者なのですが、あちこちのサイトを覗いて、見よう見まねでやってみました。
おお、確かにこの方法ですと非表示行が削除されますね。
さらに重ねての質問になってしまうのですが、

1)行列幅を変えずにコピーするにはどうすればいいか
2)コピーの前にワークシートを新規に挿入し、さらにそのシートに名前をつけるには(できれば“コピーしたいシート名-1”のような似通った名前で)

なにぶん素人ですので、もしかしたらトンデモナイ質問をしてしまっているのかもしれませんが、何卒ご容赦下さい。
よろしくお願い致します。

投稿日時 - 2003-10-15 12:26:04

あなたにオススメの質問