dポイントプレゼントキャンペーン実施中!

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

A 回答 (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
    • good
    • 2
この回答へのお礼

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

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

お礼日時:2003/10/15 14:50

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



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

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

この回答への補足

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

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

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

補足日時:2003/10/15 12:26
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!