- ベストアンサー
エクセル2000:条件によって行を非表示にする方法
エクセルのシートに表を作り、行にはNo.1~No.8と記載しています。 同シートにドロップダウンリストを作り、1~8までの数字を選ぶと、 選んだ数字より大きい数の行は非表示にしたいのですが、何か良い方法はありますか。 たとえば8を選べば、表内のNo.1~No.8の行が表示されているが、 6を選ぶとNo.7、No.8の行は非表示になり、No.1~No.6だけが表示されている状態になる、といった具合です。 よろしくお願いいたします。
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは! VBAになってしまいますが・・・ こういうことですかね? ↓の画像のような配置でE1セルにリスト表示させるようにしています。 (リストの中には空白セルを一つ入れています、空白セルを選んだ場合はすべて表示になります) 画面左下にある操作したいSheet見出し上で右クリック → コードの表示 → VBE画面が出ますので ↓のコードをコピー&ペーストしてE1セルのデータをリストから選んでみてください。 Private Sub Worksheet_Change(ByVal Target As Range) 'この行から If Target = Cells(1, 5) Then Application.ScreenUpdating = False Rows.Hidden = False Dim i As Long For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row If Cells(i, 1) > Target And Target <> "" Then Rows(i).Hidden = True End If Next i Application.ScreenUpdating = True End If End Sub 'この行ま ※ ご希望の方法と違ったらごめんなさいね。m(_ _)m
その他の回答 (6)
- imogasi
- ベストアンサー率27% (4737/17069)
>フォームのようなものを作り、その一部に今回質問させていただいた表も組み込みたいと考えています。 これは「非表示」の問題ではなく、「抜き出し」問題(抽出問題)だ。質問内容をはっきり正確に書かないから、回答者を混乱させている。 こういうレベルでは、VBAでフォームを扱うのなど早すぎる。丸投げで、回答の書かれたコードをコピペして、うまく行きましたなんて、安易で回答者はやりきれないだろう。
- 某HN クロメート(Chromate)(@CoalTar)
- ベストアンサー率40% (705/1742)
非表示ならオートフィルターで十分だと思うのですが、ほかのセルへ書き出すのでしょうか? マクロの自動記録 でちょっとだけ修正したもの Sub F1セルへ抽出する() 'F1セルを選択して[Ctrl]+[Shift]+[*] → [Delete] の組み合わせ Range("F1").CurrentRegion.ClearContents 'A1セルを選択してオートフィルター オプション ○以下と 'D1セルの値の組み合わせ Range("A1").AutoFilter Field:=1, Criteria1:="<=" & Range("D1").Value 'A1セルを選択して[Ctrl]+[Shift]+[*] → コピー の組み合わせ Range("A1").CurrentRegion.Copy 'F1セルを選択して Range("F1").Select '貼り付け ActiveSheet.Paste '[Esc] Application.CutCopyMode = False 'すべて表示 ActiveSheet.ShowAllData End Sub 添付図参照
- chonami
- ベストアンサー率43% (448/1036)
非表示ではなく抽出ではダメなんですかね。 なれないVBAを使うよりかは効率的と思いますが。 もう少し詳しく表の構成(横に項目がどれくらいあるとか、No.はどの列にあるとか)を書かれるとそういった回答が来るかもしれません。
- mu2011
- ベストアンサー率38% (1910/4994)
NO1です。 >参考サイトがあればご教示いただければと思います。 ⇒ご希望のものと少し相違しますが添付のURLを参照して下さい。
お礼
たびたびの質問にお答えいただきありがとうございました。 教えていただいたページを参考にさせていただいて自分でやってみようと思います。 ありがとうございました。
- chonami
- ベストアンサー率43% (448/1036)
普通にオートフィルタでいいのでは? オプションで、○より小さいとか。
補足
ご回答いただきありがとうございました。 質問の仕方が曖昧で申し訳ありませんでした。 フォームのようなものを作り、その一部に今回質問させていただいた表も組み込みたいと考えています。
- mu2011
- ベストアンサー率38% (1910/4994)
>選んだ数字より大きい数の行は非表示 ⇒マクロ(VBA)なら非表示とする事が可能ですが、VBA知識が必要です。 尚、「非表示」=「見えない」でよいのならば、条件付き書式でフォントをセル背景と同じに色に設定すれば可能ですが如何でしょうか。(但し、数式バー上にはデータ表示あり) 仮にA1に行入力、2行目から9行目を選択→書式→条件付き書式→「数式が」を選択、数式欄に=(ROW()-1)>$A$1→書式→フォントタブで色欄にセル背景と同色を選択→OK
補足
早速のご回答、ありがとうございました。 文字を見えなくするのではなく、できれば行自体を非表示にしたいと考えています。 マクロ(VBA)を使用する場合は、どういった式を組めばいいでしょうか。 (マクロの使用については、関連サイトを見ながらコピー&ペーストで設定する程度はやったことがあります。) または、参考サイトがあればご教示いただければと思います。 (Google等で色々検索してみましたが、見つけられず、こちらで質問させていただいた次第です。)
お礼
みなさん、わかりにくい質問にもかかわらず、回答いただきありがとうございました。 伝わるように努めたのですが、ややこしくなってしまったようです。 tom04さんに教えていただいたVBAでうまく動きました。 フォームの中に組み込めそうです。 複雑なものを作っていただきありがとうございました。