- ベストアンサー
エクセル表で特定の列を表示する方法
- エクセル2007を利用しています。エクセルの表で条件を満たした時、その列を表示させる方法はないか?
- 条件を入力する作業セルを決めて、行7に5キロと入力があれば、そのセルへ”5”と入力すると、5キロと入力されている列だけを表示させる
- 過去からのデータも残したいと思っており、複数の人が横へ横へデータを更新していくため、非表示では、(ctrlでまとめて選んでも)時間がかかってしまいます。また、必要な列を表示していなかったり、不要な表示していたりとミスが多くなっています。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
具体的にA1セルに条件を記入することにして 7行目、B7セル以右に具体的に「5キロ」「6キロ」「7キロ」また「5キロ」と記入されているとして 手順: シート名タブを右クリックしてコードの表示を選ぶ 現れたシートに下記をコピー貼り付ける private sub Worksheet_Change(byval Target as excel.range) dim c as long if target.address <> "$A$1" then exit sub application.screenupdating = false columns.hidden = false if target <> "" then for c = 2 to cells.specialcells(xlcelltypelastcell).column cells(7, c).entirecolumn.hidden = cells(7, c) <> target & "キロ" next c end if application.screenupdating = true end sub ファイルメニューから終了してエクセルに戻り A1セルに具体的に5や6と記入する A1セルをクリアすると全て表示する。
その他の回答 (1)
- tom04
- ベストアンサー率49% (2537/5117)
こんばんは! 行方向であればオートフィルタで対応できると思いますが、 今回は列方向でオートフィルタのような感じをご希望のようですね! VBAになってしまいますが、一例です。 尚、7行目の数値データは全角で入っているという前提です。 セルに検索値を入力するのではなく、インプットボックスを表示させるようにしています。 画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面に ↓のコードをコピー&ペーストしてマクロ(非表示)を実行してみてください。 (Alt+F8キー → マクロ → マクロ実行です) 尚、再表示も必要になると思いますので、「再表示」のコードも一緒に載せておきます。 Sub 非表示() 'この行から Dim j As Long, str As String str = InputBox("検索値を入力") '←半角・全角どちらでもOK For j = 1 To Cells(7, Columns.Count).End(xlToLeft).Column If Cells(7, j) <> StrConv(str, vbWide) & "キロ" Then Columns(j).Hidden = True End If Next j End Sub Sub 再表示() Columns.Hidden = False End Sub 'この行まで ※ 7行目の数値データが半角の場合はすべての列が非表示になってしまいますので、 もし数値のみが半角の場合は >If Cells(7, j) <> StrConv(str, vbWide) & "キロ" Then の行を >If Cells(7, j) <> StrConv(str, vbNarrow) & "キロ" Then に変更してみてください。 ご希望通りになれば良いのですが・・・m(_ _)m
お礼
早々にご回答ありがとうございました。 参考になりましたし、自分自身の勉強となりました。
お礼
ありがとうございます。 希望通りのデータ集約が可能となりました。 条件セルをクリアすると、元のデータに戻るところなど 希望以上のご教示、感激でした。m(_ _)m 本当にありがとうございました。m(_ _)m