
ある膨大なデータをまとめた数百行からなる Excel ファイルがある
のですが、その中で数箇所「非表示にされた行」があります。
その非表示行を探すワークシート関数って有りますでしょうか?
(ワークシート関数が無理なら、マクロでも良いです。)
・非表示にされた行は1行だけの時もありますし、
2, 3 行をまとめて非表示にしている場合もあります。
・Excel バージョンは 2003 です。
・私の方で見つけた1つの方法として、以下の方法があります。
1. 適当な列に連続データで 1 から始まる番号を振る
2. それを適当なグラフにする
3. グラフの中で急に傾きが変化している所があれば、そこが非表示行である
・ただし、上記の方法ですと数十行なら視覚的に見つけやすいのですが
数百行、数千行の場合はグラフの中の傾きの変化が見つけづらいので NG
・一番理想的なのは画像の中の B4 (黄色いセル) のように、非表示行の1つ上の行に
"1" を表示し、かつ、それをワークシート関数で実現する事です。
・Ctrl-A で全部のセルを選択し、適当な所で右クリックをして「再表示」とすれば
非表示行が表示される方法は既に知っております。
私が知りたいのは「非表示の状態で、非表示行の場所」を知りたいのです。
以上、よろしくお願いします。

No.1ベストアンサー
- 回答日時:
関数ではなくてマクロを使った方法ですが
Sub Macro1()
Dim i As Long
Dim MaxRow As Long
With ActiveSheet.UsedRange
MaxRow = .Rows(.Rows.Count).Row
End With
For i = 1 To MaxRow
If Rows(i + 1).EntireRow.Hidden = True Then
If Rows(i).EntireRow.Hidden = False Then
Range("B" & i) = 1
Range("B" & i).Interior.ColorIndex = 36
End If
Else
Range("B" & i) = 0
End If
Next i
End Sub
ご希望通りであればいいのですが。
返信が遅れてすみません。
バッチリ希望通りの動作です。
ありがとうございました。本当に助かりました。
これで数百行の Excel ファイルで、非表示行の存在を気にしつつ
上から下までデータを閲覧する事ができます。
効率的に見る事ができるようになり助かりました。
No.5
- 回答日時:
ご利用のエクセルのバージョンが不明ですが,Excel2003以降で。
A列に「何か」埋めておきます。数字でも文字でもナンデモ構いません。
B1に
=IF(SUBTOTAL(103,A1),"",ROW(A1))
と記入し,下向けにオートフィルドラッグでリスト下端まで埋めておきます。
(隠れてない行の範囲で)
たとえばD1に
=SMALL(B:B,ROW(D1))
と記入して下向けにコピーすると,「隠れた行の行番号」が並びます。
返信が遅れてすみません。
SUBTOTAL 103 , ROW , SMALL を駆使して非表示行を調べるのですね、
keithin さんの方法でも非表示行のリストアップができる事を確認しました。
マクロを使わないのであれば、こう言う方法もあるのですね、
参考になりました。ありがとうございました。
No.4
- 回答日時:
エクセルの関数のできる対象をはっきり掴んでないから、無駄な質問がよく出る。
エクセルの関数は、歴史的経緯からか、対象はセルの値だけに限られる。返す値もセルのだけ値だ。
セルの属性的なものには、本件の非表示や、列幅、行高、表示形式、数式、コメントなどは対象から外れるもの(関数では扱えない。そういうものには手を広げない設計・体系になっている)。
VBAであれば1シートの普通の範囲(行数、数千行)であれば、VBAで実行して実用になるだろう。
しかしそういうブックが多数あると、実行時間がかかって使えないかも知れない。
>ある膨大なデータをまとめた数百行からなる
膨大なデータは、素(基)のデータなのか、素(基)のデータをまとめたデータのほうか、はっきりしない大雑把な書き方だ。
質問振りから、こういうことを考えるのは専門家に相談すると良い。VBAの場合は丸投げになるが、意味ややり方は判らないだろうから。
ーー
非表示の行がグラフに要素として表示されないことを使うなど、邪道だと思う。よければどうぞ。
ーー
マクロの記録をも勉強した形跡はない。それを少し変えて、
Sub test01()
For i = 1 To 10
If Rows(i).EntireRow.Hidden = True Then
MsgBox i
End If
Next i
End Sub
で臭いはわかるだろう。非表示行の行番号がつかめる。
ーーーー
参考に「エクセル VBA 非表示行 探索」
で照会すること。
ーー
それより、表示の場所を知って何をしたいか書いておくと、初心者的な発想かどうかわかる場合が在る。
質問するときは、(自明な場合以外は)その後の目的も一応書け。
No.3
- 回答日時:
No.2です!
たびたびごめんなさい。
色を付けるセルはB列でしたね!前回はA列に色を付けてしまいました。
もう一度訂正したコードを載せておきます。
Sub test()
Dim i As Long
With Columns(2)
.Interior.ColorIndex = xlNone
.ClearContents
End With
Application.ScreenUpdating = False
For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row
If Rows(i).Hidden = True Then
With Cells(i - 1, 2)
.Value = 1
.Interior.ColorIndex = 6
End With
End If
Next i
Application.ScreenUpdating = True
End Sub
何度も失礼しました。m(_ _)m
返信が遅れてすみません。
2度にわたり回答して頂いてありがとうございました。
tom04 さんのマクロもほぼ思った通りに動いてくれる事を確認しました。
Rows(i).Hidden で非表示かどうかの判断ができるんですね、
参考にさせて頂きます。
No.2
- 回答日時:
こんばんは!
VBAになってしまいますが・・・
一例です。
操作したいSheet見出し上で右クリック → コードの表示 → VBE画面が出ますので
↓のコードをコピー&ペーストしてマクロを実行してみてください。
(Alt+F8キー → マクロ → マクロ実行です)
Sub test() 'この行から
Dim i As Long
Columns(1).Interior.ColorIndex = xlNone
Columns(2).ClearContents
Application.ScreenUpdating = False
For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row
If Rows(i).Hidden = True Then
With Cells(i - 1, 1)
.Interior.ColorIndex = 6
.Offset(, 1) = 1
End With
End If
Next i
Application.ScreenUpdating = True
End Sub 'この行まで
※ 行を再表示した場合は、非表示だった行にも色がついています。(B列にも「1」が表示)
※ もう一度マクロを実行すると色は消え、B列の「1」もクリアされます。
こんな感じではどうでしょうか?m(_ _)m
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 【マクロ】マクロが保存されているエクセルとは、別のエクセルブックの全シートの非表示列を再表示したい 1 2022/12/24 20:48
- Excel(エクセル) エクセルのマクロについて教えてください。 2 2023/01/25 11:42
- Visual Basic(VBA) Excelのマクロコードについて教えてください。 1 2022/06/19 10:08
- Excel(エクセル) Excelでnullになるような式のセルをマクロで空白行と認識させるにはどうすればいいですか? 3 2023/03/13 13:42
- Excel(エクセル) Excel(エクセル)でフィルター抽出後、非表示の行を計算しないで、合計を算出する方法 【内容】 添 4 2023/01/30 17:17
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 3 2022/06/10 09:24
- Excel(エクセル) エクセルの数式で教えてください。 1 2023/02/02 10:20
- Excel(エクセル) excelで検索した商品の画像(ネットワーク上の)を表示させたい。 3 2023/06/28 00:32
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 2 2022/06/10 11:06
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/03/07 14:05
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel2007で、太字にした行のみ...
-
Excel にて非表示行を探すワー...
-
VBA コピーを有効行までループ...
-
excel ある部分だけをコピペし...
-
条件に応じて特定の行を非表示...
-
値貼り付けをしても書式も貼り...
-
Excel(VBA)データ入力に応じて...
-
エクセル VBA 小数点を含む数字...
-
エクセルで連番をマクロで
-
行の入れ替えってどうするの?
-
エクセルで全ての数字間にカン...
-
Excelでセル内の数式は残し値だ...
-
エクセルで特定の行を消して間...
-
エクセルで小数を含む数字を抽...
-
エクセルのマクロを教えてくだ...
-
エクセルで特定の数字となる組...
-
特定のセルだけ結果がおかしい...
-
エクセルで前シートを参照して...
-
エクセルの複数シートの保護を...
-
別シート参照のセルをシート毎...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel2007で、太字にした行のみ...
-
条件に応じて特定の行を非表示...
-
Excel にて非表示行を探すワー...
-
excel ある部分だけをコピペし...
-
エクセル VBA 小数点を含む数字...
-
値貼り付けをしても書式も貼り...
-
「マクロ」の足し算の式を教え...
-
エクセルで全ての数字間にカン...
-
Excel(VBA)データ入力に応じて...
-
Excel2007 セルを右方向に削除...
-
wordのvbaでハイパーリンク設定...
-
Excelでセル内の数式は残し値だ...
-
エクセルで連番をマクロで
-
エクセルで特定の行を消して間...
-
エクセル オートフィルタの抽...
-
エクセルで特定の数字となる組...
-
行の入れ替えってどうするの?
-
昨日、エクセルVBAで、隣のセル...
-
エクセル2003でマクロをおこな...
-
【マクロ】セル内のテキストを...
おすすめ情報