- 締切済み
《エクセル2000》非表示になっている行を一括選択して削除したい
表示・非表示行が混在しているシートが40強あります。 自分で作ったファイルではないので勝手がわからず、今は一行一行非表示行がないかを目で確認して、表示→削除という手順を踏んでいます。 例えば「表示行と非表示行を入れ替える」ような機能はありますか?
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- ja7awu
- ベストアンサー率62% (292/464)
シートが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
VBAが必要ですが、表示行/列のみをコピーし、別のシートに貼り付ければ、結果的に非表示行/列は削除されます。 一例ですが、Sheet1の表示行/列をSheet2に貼り付ける場合、下記の要領です。 Sub Test() With Application .Worksheets(1).UsedRange.SpecialCells(xlCellTypeVisible).Copy .Worksheets(2).Paste End With End Sub
補足
こんにちは。 実は当方マクロは全くの初心者なのですが、あちこちのサイトを覗いて、見よう見まねでやってみました。 おお、確かにこの方法ですと非表示行が削除されますね。 さらに重ねての質問になってしまうのですが、 1)行列幅を変えずにコピーするにはどうすればいいか 2)コピーの前にワークシートを新規に挿入し、さらにそのシートに名前をつけるには(できれば“コピーしたいシート名-1”のような似通った名前で) なにぶん素人ですので、もしかしたらトンデモナイ質問をしてしまっているのかもしれませんが、何卒ご容赦下さい。 よろしくお願い致します。
お礼
こんにちは。 なるほど…手作業にした方が早いですか(^^;)了解です。 データベースソフトだと非表示レコードだけを簡単に選択できたりするので、もしかしたらエクセルでも似たようなことをできるのかもしれないと思い、お気楽に質問させていただきました。 ご回答をどうもありがとうございました。