• 締切済み

エクセルの質問。今、業務で膨大な資料の一覧表を作成しています。

エクセルの質問。今、業務で膨大な資料の一覧表を作成しています。 オートフィルターを使い、資料の中から欲しい情報を取り出せるようにしています。 ただ、項目(列)が多すぎる為、横長になっています。オートフィルターで検索できても横スクロールや矢印を使わないと全て見れません。 そこで、必要な項目だけを検索できるようにしたいのですが(見れる大きさで、必要最小限を画面内に収めたい)、なかなかよい機能が見つかりません。 例えば、「今はB列、D列のみをオートフィルターで表示(検索)したい」や、「今度はA列、G列、H列のみをオートフィルターで表示(検索)したい」など、その時必要な項目だけを検索できるようにしたいです。 出来れば最初にボタン機能等を使って自在にセルを表示、非表示したいです。 ネットで色々検索しましたが分かりません。アドバイス宜しくお願いします。 ※右クリックの「表示しない」、「再表示」以外の機能でお願いします。 あくまで、選んで検索できるようにしたいです。皆さんの知恵をお貸し下さい。 以上

みんなの回答

  • pc_net_sp
  • ベストアンサー率46% (468/1003)
回答No.4

データ範囲を選択して、選択範囲内で右クリック=>リストの作成を使ってみては如何でしょうか?? リストの作成・操作方法は、検索すれば一杯出てきますので、ご自分で調べて下さい。 リストを作成すると、表示・非表示を使わなくても、必要なデータのみピックアップ出来ます。    

  • nda23
  • ベストアンサー率54% (777/1415)
回答No.3

ちょっと解説します。 「値」とか「名」は単なる変数名です。サンプルでは英字の変数名が 普通ですが、漢字の変数名も使用可能なので、私は可能な限り漢字の 変数名を使っています。 (2)のコードはワークブックのOpen時にでも実行される処理です。 例えば、Workbook_Openメソッドに記述します。又はシート上に ボタンを置いて、クリック時の動作としても良いでしょう。 Set シート = ThisWorkbook.Worksheets(1) 対象シートは自ワークブックの1番目のワークシートと想定して います。()内は("Sheet1")のように名前で指定もできます。 最終 = シート.Range("A1:IV1").End(xlToRight).Column A列からデータが始まるとして、有効な最右端の列位置を求めて います。つまり、リストに並べる最終列名を決めるためです。 名 = "" 値 = (列 - 1) \ 26 If 値 > 0 Then 名 = Chr(&H40 + 値) 値 = (列 - 1) Mod 26 リスト.AddItem 名 & Chr(&H41 + 値) リストに表示させる名(A、B、C、…)を作っています。 27列目からは"AA"、"AB"となるので、(列 - 1) \ 26 で27以上の 部分がある(1以上)か、ないか(0)を調べています。 Chr(&h41)は"A"、Chr(&h42)は"B"なので、Chr(&H40 + 値)は 例えば列"AC"の左側の"A"を形成しています。MODは剰余を求める 演算子です。名 & Chr(&H41 + 値)は例えば列"AC"の右側の"C"を 形成しています。 (3)はフォームのコマンドボタンクリック時の処理です。 Set シート = ThisWorkbook.Worksheets(1) (2)の処理と同じターゲット(ワークシート)が指定されます。 最終 = リスト.ListCount - 1 リストボックスの行数-1(0から数えるため、有効値は-1する)が 最終有効列位置と同じになります。(2)で1~最終列が行として 登録されているからです。 For 列 = 0 To 255 全ての列について処理するためのループです。 値 = 列 \ 26 以下は(2)で示した通り、列名を形成する操作です。 以下はTrueとFalseを間違えていましたので、変更して ください。下記サンプルは正しい記述です。 値 = True If 列 < リスト.ListCount Then     If リスト.Selected(列) Then 値 = False End If 値には初期値としてTrue(非表示)を設定します。 最初のIfは列位置がリスト内にあるかどうかを調べます。 リストになければ値はTrueのままです。次のIfはリストで 該当行が選択されているかどうかを調べています。 選択されていれば値をFalse(表示)にします。 With シート.Columns(名 & ":" & 名)     If .Hidden <> 値 Then .Hidden = 値 End With 列を表示/非表示にする操作です。HiddenがTrueならば 非表示、Falseなら表示です。現在値と同じ値を設定しても 問題は無いのですが、画面がチラつくので、値が異なる時 のみ、設定を行っています。

  • nda23
  • ベストアンサー率54% (777/1415)
回答No.2

(1)リストボックス、コマンドボタンを持つユーザフォームを作る。 (2)例えばブックのOpen時に、選択可能な列名をリストボックスに仕込んで表示する。 (3)コマンドボタンクリックのイベントで、リスト指定の列以外は非表示にする。 (2)のコード Dim シート As Worksheet Dim リスト As MSForms.ListBox Dim 最終 As Long, 列 As Long Dim 値 As Long, 名 As String Set シート = ThisWorkbook.Worksheets(1) シート.Columns("A:IV").Hidden = False '全列表示 最終 = シート.Range("A1:IV1").End(xlToRight).Column Set リスト = UserForm1.ListBox1 For 列 = 1 To 最終     名 = ""     値 = (列 - 1) \ 26     If 値 > 0 Then 名 = Chr(&H40 + 値)     値 = (列 - 1) Mod 26     リスト.AddItem 名 & Chr(&H41 + 値) Next UserForm1.Show (3)のコード Dim シート As Worksheet Dim リスト As MSForms.ListBox Dim 最終 As Long, 列 As Long Dim 値 As Long, 名 As String Set シート = ThisWorkbook.Worksheets(1) Set リスト = UserForm1.ListBox1 最終 = リスト.ListCount - 1 For 列 = 0 To 255     名 = ""     値 = 列 \ 26     If 値 > 0 Then 名 = Chr(&H40 + 値)     値 = 列 Mod 26     名 = 名 & Chr(&H41 + 値)     値 = False     If 列 < リスト.ListCount Then         If リスト.Selected(列) Then 値 = True     End If     With シート.Columns(名 & ":" & 名)         If .Hidden <> 値 Then .Hidden = 値     End With Next UserForm1.Hide

diwali_sweat
質問者

お礼

返事遅れましたが、高度な回答ありがとう御座います。 今から内容を勉強しようと思います。ただ、私にこのような高度技術はないのでちんぷんかんぷんです・・。 名?値?といった感じです。多分(3)が目指しているものだと思います!! 取り急ぎお礼をさせていただきます。ありがとう御座います。

  • ipsum11
  • ベストアンサー率21% (55/251)
回答No.1

マクロを使えば出来るのではないでしょうか。

diwali_sweat
質問者

補足

早速の回答ありがとう御座います。大変感謝致します。 マクロについて早速調べました。確かにこれを使えば消すことは出来ますが、少しやりたいことと違いました。説明が足りなかったかもしれませんので、もう少し補足させて頂きます。 空白ではなく、画面から列ごと非表示にしたいです。一番近いのは、やはり「列」、「行」の上で右クリック→「表示しない」、「再表示」機能です。 一番の理想は、この機能ををチェックボックスやオプションボタンを使用して簡単に行えるようにしたいです。 例えば○A ○B ○C ○D ・・・・・のようにオプションボタンがあったとします。 「◎A にチェックを入れる」→「A列のみ表示する」、「A列のみ非表示にする」といったようにしたいです。 無理でしょうか?? この集計データを使用する人が、「右クリックではなく、左クリックのみで」見たい情報を検索できるようにしたいです。 ALLオートフィルターみたいな便利なデータにしたいです。 宜しくお願いします。 以上

関連するQ&A

  • excelのフィルタ機能のリスト一覧の取得

    excelのフィルタ機能 excelのフィルタ機能は、リストを表示し、その中から必要な項目を選択し同じものを サーチした結果を表示の機能ですが、このリスト自体(項目の全体)をコピーして どこかへ貼りつけるということは可能でしょうか. もしそれができないとしたらそれに替わる方法は有りますか. 意味:例えば表の中に名前の列があるとして名前の種類全体を表にするとかしたいのです.

  • エクセルについて質問です

    セルにオートフィルターのようなボタン(?)があり、それをクリックすると一覧がでるようにするにはどうすればいいのでしょうか? ※一覧が同じページにありそこから選べる形です。 『M行1列目から1、2,3,4,5と5列目まであり、  A1にボタン(?)があり1~5を選べる』 といった感じです。 わかりにくいとは思いますが、この文章理解できて解決できる方、 よろしくお願いいたします

  • エクセルの「フォーム」機能を使って作成したデータを…。

    エクセルの「フォーム」機能(「データ」→ 「フォーム」を選択して使用)を使用して以下の表を作成しました。 A列 12345 25896 11589 37586 A列をオートフィルタを使って検索する際、 「から始まる」を使って検索したいのですが (ex.「1から始まる」にすれば「12345」と「11589」が でてくる) フォーム機能を使用して作成したデータの場合、 一致した値でないとフィルタがかかってくれません。 どのようにしたら「から始まる」でも検索できるようになるか、ご存知のかたいらっしゃいませんか?

  • エクセルでオートフィルタのボタンの位置の変更について

    フィルタ(オートフィルタ)で、抽出項目を設定する際の矢印ボタンの位置の変更は出来るでしょうか。 具体的には、1行目から4行目には表にあまり関係ないことが入力されていて、5行目から表が始まり、5行目には列の項目名が入力されています。 普通にオートフィルタを設定すると、1行目に矢印ボタンが表示されますが、これを5行目に表示させたいのですがどのようにすれば出来ますか。 Excel2000です。

  • 今までに国内で発売されたスマートフォンの機種名一覧

    業務資料として、今までに国内で発売されたスマートフォンのキャリア・OS別の 機種名(型番も)一覧の作成が必要になったのですが、こちらの情報が一覧できる形で まとまっているHPなどありますでしょうか? ※10機種ずつ表示されて、改ページしていくようなところはあったのですが、 できれば1画面でずらっと表示されているとありがたいのですが。。。(量もなかなか膨大なので) もしご存じでしたらお教えいただければと思います。

    • ベストアンサー
    • au
  • エクセルの質問です。

    三つ質問があります。 (1)エクセルで並べ替えをする際にオートフィルタで一部だけ表示させ、 またその表示されている部分だけで並べ替えをするとデータはずれてしまうものなのでしょうか。オートフィルタを使う際に注意すべきことがあればお教え願います。 (2)例えば、A列が55歳以上60歳未満ならB列に「いろは」と表示させ、60歳以上なら「ほへと」と表示させたい場合、どういった数式を入れればよいでしょうか。二つの条件の入れ方がわからないのでお教えください。 (3)エクセルの列も行も数字番号になっています。1列1行ではなく、A列1行などの設定にしたい場合どうするべきですか。 よろしくお願いいたします。

  • エクセルのフィルタの表示は何件までか

    エクセルでオートフィルタをした場合、三角マークをクリックするとその列の項目を表示しますが、これは何件まで表示するのでしょうか。 膨大な量の表があり、どうも全部が表示されていないようなのです。

  • Excel ―オートフィルタ機能

    Excelで表示するデータが含まれる列のオートフィルタ矢印をクリックします。 そこでプルダウン表示され代表項目名がでてきますが、通常その中の項目をピックアップして 見たい項目を表示しますが、 今やりたいことは、その代表項目自体を報告書を作るためにコピーしてもってきたいということです。 もしそれができなければ一つ横に列を追加して代表項目数分表示して先頭のものだけ1を自分で立て、それを項目数分行ってから1のものだけフィルタで選び出せればできることはできるが。 簡単な方法は?

  • エクセルのオートフィルタ機能について

    お世話になります。 エクセルのオートフィルタ機能(エクセル2003)がうまく効かず困っております。 【状態】 1112345 1114567 1117890 上の様なデータの中で頭3桁が111のデータを抽出したいとします。 (1)オートフィルタのオプション検索にて、「111を含む」を使用し、探したい条件を入力実行→結果は何も表示されない(空白セルのみ) (2)文字列の影響かと思い、検索範囲のセルから「111」をコピペして入力実行するも、結果同じ プルダウンで表示される一覧から「1112345」を選択すればその項目は表示される。 「~と同じ」の条件では上手く機能するので、仕方なくLEFTで頭3桁を列追加して検索かけてますが、 データ量が多くいかんせん不便。。。 「~を含む」機能が使えないのは何が悪いのでしょうか? 当方エクセルに詳しい訳ではないので打つ手が見つからず困っております。 起動時マクロ設定の有効、無効の選択ありますがどちらもダメでした。

  • エクセル一覧表からの検索

    商品管理に使いたいのですが、例えばA列に商品NO.B列に商品名、C列にメーカー名・・・といった一覧表から↓  A        B       C     D  商品NO.  商品名  メーカー名  棚NO. 0001    オシエテ   goo     A-1 0002    コタエテ    net     A-2 vlookup関数で商品NO.(A列)を入力し、商品名(B列)を検索する数式はわかったんですが、同時にメーカー名(C列)棚NO.(D列)も表示したいんですがどんな方法があるでしょうか?(現在、0001入力でオシエテは検索できるがgoo A-1が出ない。当たり前だけど) また、B入力で他のA C DさらにC入力でA B Dが一発で検索できるようにしたいのですが何か良い方法はありませんか?よろしくお願いします。