• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Excel にて非表示行を探すワークシート関数)

Excelで非表示行を探す方法

このQ&Aのポイント
  • Excelファイル内の膨大なデータの中で非表示にされた行を探す方法について解説します。
  • 非表示行を見つけるためのワークシート関数やマクロについても紹介します。
  • グラフを使用して非表示行を見つける方法や、セルに表示していない非表示行の位置を知る方法についても説明します。

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

  • ベストアンサー
  • mar00
  • ベストアンサー率36% (158/430)
回答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 ご希望通りであればいいのですが。

maguro_daisuki
質問者

お礼

返信が遅れてすみません。 バッチリ希望通りの動作です。 ありがとうございました。本当に助かりました。 これで数百行の Excel ファイルで、非表示行の存在を気にしつつ 上から下までデータを閲覧する事ができます。 効率的に見る事ができるようになり助かりました。

すると、全ての回答が全文表示されます。

その他の回答 (4)

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.5

ご利用のエクセルのバージョンが不明ですが,Excel2003以降で。 A列に「何か」埋めておきます。数字でも文字でもナンデモ構いません。 B1に =IF(SUBTOTAL(103,A1),"",ROW(A1)) と記入し,下向けにオートフィルドラッグでリスト下端まで埋めておきます。 (隠れてない行の範囲で) たとえばD1に =SMALL(B:B,ROW(D1)) と記入して下向けにコピーすると,「隠れた行の行番号」が並びます。

maguro_daisuki
質問者

お礼

返信が遅れてすみません。 SUBTOTAL 103 , ROW , SMALL を駆使して非表示行を調べるのですね、 keithin さんの方法でも非表示行のリストアップができる事を確認しました。 マクロを使わないのであれば、こう言う方法もあるのですね、 参考になりました。ありがとうございました。

すると、全ての回答が全文表示されます。
  • imogasi
  • ベストアンサー率27% (4737/17070)
回答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 非表示行 探索」 で照会すること。 ーー それより、表示の場所を知って何をしたいか書いておくと、初心者的な発想かどうかわかる場合が在る。 質問するときは、(自明な場合以外は)その後の目的も一応書け。

すると、全ての回答が全文表示されます。
  • tom04
  • ベストアンサー率49% (2537/5117)
回答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

maguro_daisuki
質問者

お礼

返信が遅れてすみません。 2度にわたり回答して頂いてありがとうございました。 tom04 さんのマクロもほぼ思った通りに動いてくれる事を確認しました。 Rows(i).Hidden で非表示かどうかの判断ができるんですね、 参考にさせて頂きます。

すると、全ての回答が全文表示されます。
  • tom04
  • ベストアンサー率49% (2537/5117)
回答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