• ベストアンサー

Excelでプルダウンメニューのような・・・

エクセルでデータ→フィルタ→オートフィルターを選択すると通常一行目各列に△印が出てきますよね。あんな感じのフィルターをA列のみに縦型にフィルターを出したいんです。A列には日付が記入されており、一つの日付には15~20行の項目があります(B列に)。日付別にフィルターをかけて一日1行で表示させたいのです。非表示行を選択して右クリック「表示しない」でも出来るのですが、表示させる行はまちまちなので飛びとびに行選択して右クリック「表示しない」を繰り返さなくてはならないのでとても面倒なのです。 やり方を知ってる方教えてください。

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.6

#5です。補足いただきありがとうございます。 ただ補足を読んだあとでもよくわからなかった。 これは関数ではできない問題です。関数は行を非表示にすることはできません。 そこで、「こういう問題かなあ」と想像の上、VBAでやってみました。 ツールーマクローVBEをクリック 普通左のフレームのVBAProjectのSheet1(問題にしているシート) をダブルクリック。 上辺の左のGeneralでWorksheet、右のDeclarationでSelectionChangeをクリックして選択する Private Sub Worksheet_SelectionChange(ByVal Target As Range) End Sub がでる。 下記を貼り付ける。(最初行と最終行はすでにあるので、除いてコピぺ) Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Column = 2 Then d = Range("B65536").End(xlUp).Row x = Target.Offset(0, -1) For i = 1 To d If Cells(i, "B").Value = Target.Value And i <> Target.Row Then If x = 1 Then Rows(i).EntireRow.Hidden = False Else Rows(i).EntireRow.Hidden = True End If If x = 1 Then Target.Offset(0, -1) = "" Else Target.Offset(0, -1) = 1 End If End If Next i End If End Sub 例データ(本当は日付らしいが、文字列と同じと思う) A列は列挿入で、問題にしているデータ列のすぐ左に列を作ること。 B2:B16 a a a a a d d d d f f f f s のとき B10(=d)をクリックすると A列 B列 a a a a a 1 d f f f f s となります。A列の1は折りたたまれたことを示しています。 (同じセルで解除するときに限り) どこか1たんB列以外のセルをクリックし(ここがまどろっかしいがやむをえない)、その後B10をクリックすると 元に戻ります。 1は他の好みの文字・記号(▼など)をセットするように、上記プログラムを変えれば簡単に変えられます。 上記でのa、dなどの出現は、出現行が1かたまりになっている必要があります。

takuya_9769
質問者

お礼

丁寧なご回答ありがとうございます。自動マクロぐらいは作成した事があるのですが、こういったプログラムは全く分かりません。コピペしてトライしてみます。 ありがとうございました。

その他の回答 (5)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.5

>A列のみに縦型にフィルターを出したいんです 縦型の意味は。この部分不要では。 >一つの日付には15~20行の項目があります(B列に A列には1つの日付は1つの行しかないのですか。 B列はその日に対して、データがあるということ? A列は同じ日付けを入力すべき(または、入力しても良い)ところ、省略してあるということですか。 >日付別にフィルターをかけて A列でフィルタをかけることですね。 >一日1行で表示させたいのです この意味がわからない。合計でもして1行に集約するのですか。 >表示させる行はまちまちなので どういう基準でエラ宇野ですか ーーー 回答者の多くの人が疑問を持っておられるようです。質問した以上、回答の 出具合を、ある程度頻繁に見て、早く補足するぐらいの努力をすべきでしょう。

takuya_9769
質問者

お礼

ご回答ありがとうございます。下手な記述で質問の意味がわからなくて皆さんにご迷惑をおかけしましたね。どうもすみません。おまけに質問直後に外出しなければならなくなって・・・レスも遅くなり重ねてご迷惑をおかけしました。 A列には日付があって、オートフィルタのようなボタンをクリックすれば展開して全ての(同じ日付)行が表示され、もう一度クリックしたらボタンのある行だけが表示されるように(格納?)したかったんです。できれば任意の複数行にも出来ないかな?と。エラ宇基準はありません。 どうもありがとうございました。

  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.4

#1のmshr1962です。 オートフィルタで行う場合の方法 A列の日付はすべての行にない場合 A列のフィルタの対象を「空白以外のセル」にする。 A列の日付はすべての行にある場合 A列の右に1列挿入 A2=COUNTIF($A$2:$A2,B2) として最終行までコピー これで同日付の行数が出来ます。1でフィルターをかければ1行目が表示

takuya_9769
質問者

お礼

ご回答ありがとうございます。 教えていただいた方法でトライしてみます。どうもありがとうございました。

  • bdr
  • ベストアンサー率43% (35/80)
回答No.3

ちょっと質問の意味がわかりません >A列には日付が記入されており、一つの日付には15~20行の項目があります(B列に) これは以下のような感じでしょうか? 元データ(1) A列 B列 9/15 項目1 9/15 項目2 9/15 項目3 9/20 項目1 9/20 項目3 それとも 元データ(2) A列 B列 9/15 項目1    項目2 9/20 項目1    項目3 9/15 項目3 といった感じでしょうか? >日付別にフィルターをかけて一日1行で表示させたいのです とはどのどのような表示状態でしょうか? 結果(1) 列A 列B 列C 列D 9/15 項目1 項目2 項目3 のように表示したいのでしょうか >非表示行を選択して右クリック「表示しない」でも出来るのです から推測すると、この結果(1)を期待しているわけではなさそうですが… 結果(2) A列 B列 9/15 項目1 9/15 項目2 9/15 項目3 のように表示したいのでしょうか パターンA 元データ(1)を結果(2)のようにするのは、単純なフィルタ(データ→フィルタ→オートフィルター)で可能です パターンB 元データ(2)を結果(2)のようにするには、C列の全ての行に日付を入れて、C列でフィルタをかけることになります ちなみに元データのC列には C1:=A1 C2:IF(A2="",C1,A2) C3:IF(A3="",C2,A3) ・・・ で全ての行に日付をいれることができると思います パターンC 元データ(1)を結果(1)にするのは、結構難しいと思います パターンD 元データ(2)を結果(1)にするのは、結構難しいと思います パターンCやパターンDを期待しているのであれば、別途考えましょう

takuya_9769
質問者

補足

回答ありがとうございます。 質問の記述が分かりにくくてすみません。 言い換えればA列をオートフィルタのようなボタン操作で展開&格納?をしたかったんです。 元データは(2)のパターンです。パターンBをこの後やってみます。ありがとうございました。

  • zenjee
  • ベストアンサー率47% (50/106)
回答No.2

>日付別にフィルターをかけて一日1行で表示 >表示させる行はまちまちなので…… 例えば1日のデータが15~20行あった場合に、そのうち表示させる行はランダムに選ぶのでしょうか、それとも何か選択の基準(例えばその日の最上行など)があるのでしょうか。 もし、何も基準がなく全く任意に選択するのならCTRLキーを押しながら、仰るように非表示にしたい行番号を順次クリックしてゆき、終わったところで書式→行→表示しないをクリックするしかないでしょう。 基準があるのならそれを補足してください。

takuya_9769
質問者

補足

記述が分かりにくくてすみません。 一日の「売り上げの品目別・メーカー別」に記入してます。ですので20行ある日もあれば40行ある日もあります。その中から任意の数行だけを表示したかったんです。基準はありません。

  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.1

データ→集計 日付の列を対象に掛ければ良いのでは? A列の左に[1][2][3]というボタンが表示され [1]だと最終合計 [2]だと日付の合計 [3]だと明細 という風に表示選択出来ます。

関連するQ&A

  • エクセルの技

    こんなときどうすればよいでしょうか。 (1)エクセルの例えばA列3行目に入力された文字が同じA列内の他の行にあるかどうか、B列に関数を使用して知りたい。できれば何行目にあるかまで知りたい。 (2)データベースにオートフィルタを使用していて、ⅴマークが右に出ている(一番上の行の)セルをクリックしたときに出てくる項目をエクセルの他のSHEETに貼り付けたい。 (2)については便利な方法があれば何ステップが踏む方法でも構わないので教えて下さい。よろしくお願いします。

  • エクセルで、22列しか使わない。(初心者)

    表として使っているだけのものがあり、オートフィルタをよく使っています。 (名前順とか日付順に探すため) ただオートフィルタを使うとき、ずっと後ろの行まで行ってしまいます。(DD列目) 今、22列しか使っていないので戻すのが面倒です。 23列目以降が表示されなくなる方法ってありますか? よろしくお願いいたします。 Win98SE Excel 2000

  • エクセル プルダウンについて

    別々のファイルに入っているいくつかのシートを一つにまとめたくて、 右クリック『移動またはコピー』のコピーで新しいブックを作りました。 そうしたら、新しいブックのシート内でプルダウンの▼は出るのですが左クリックをしても選択項目が 出てこない列ができてしまいました。 (同じシートでも選択項目の出る列もあります・・・) 元どおり▼で選択できるようにするにはどう修復すれば良いのでしょうか?? 『移動またはコピー』のやり方が間違っていたのでしょうか?? お知恵を貸してください。お願いいたします。

  • セルの横幅を調整するExcelのショートカットキー

    a b c d ....... (1行目 : ヘーダー) 1 2 3 4 ........(2行目以降: データ) 5 6 7 8 ......... 一行目は項目が入力してあり、2行目以降はデータが入っています。 このようなシートがあったときに、一行目の項目の文字を縦表示にして(通常はマウスで行を選択して書式設定から変更しています)、さらにそれぞれの列の横幅をデータの幅に合わせて調整(通常はシート全体を選択した状態で境目をダブルクリックして調整しています)し、さらに一行目にオートフィルターを入れるという動作をショートカットキーのみでやりたいと考えています。 最後の、オートフィルタの挿入は、一行目を選択した状態で Alt + D+ F +F でできることは分かっています。 残りの、縦表示への変更、列の幅調整のショートカットキーを教えてください。

  • Excelでマクロを使用して、列を表示させる質問です。

    Excle2003での質問です。 C3セルからAE78セルまでにデータが入力されています。 C列には項目名・3行には氏名が並んでいます。 D4セルからAE78セルには、 各人に対応する項目に○や△等が記入されています。 (空白セルもあります) A1セルに氏名を記入して(3行目のリストから選択して)、 マクロを実行させると、 1.氏名を一致する氏名の列のみを表示して、 2.オートフィルタで空白以外の行を表示する。 (ただしC列の項目名は表示されたまま) このようなマクロを組みたいのですが、 初心者の私ではまったく分かりませんでした。 どなたかご教授いただけたらと思います。 よろしくお願いいたしますm(_ _)m

  • エクセルで、プルダウンメニューの作り方は?

    エクセルで、例えばアンケート回答欄にあるような、▼印をクリックすると中にあらかじめ設定してある複数の文字列が表示される。 この設定の仕方を教えて下さい。

  • エクセルで、異なる日付の入っている行を抽出する。

    1 あ  20060102  20060102  さる 2 い  20060203  20060203  いぬ 3 う  20060303  20060301   きじ 4 え  20060404  20060404  ねこ 5 お  20060501           わに 2つの列に年月日が入力されてますが、上のように数値として入力されています。 5の行のように右の列の日付が空白になっているものもあります。 この中から2つの列の日付を比較して、両方に日付が入力されていてかつ異なる行を下記のように、抽出したいのです。 3 う 20060303 20060301 きじ オートフィルタのフィルタオプションでやろうと思ったのですが、うまくいきませんでした。 よろしくお願いします。

  • エクセルのマクロ(検索)

    お世話になります。 エクセルのマクロで以下の処理をしたいのですがアドバイスください。 Excel2002です。 以下は実際の作業を簡略化したものです。 F列が●●という文字列で、かつE列が空白以外の行を検索した結果、 →対象行がない場合、【対象行はありません】というメッセージボックスを出し、OKをクリックしてマクロを終了させる →ある場合、1行目にオートフィルタを設定し、F列が●●という文字列で、かつE列が空白以外の行を表示させる(オートフィルタの機能で)ここでマクロの動作を一時停止させ、【続行】or【終了】が選択できるメッセージボックスを表示させる。 ここで【終了】をクリックすればマクロを終了させる。 【続行】をクリックすれば、いまオートフィルタで表示されている行のD列を値をすべて-1に変更する。次にオートフィルタを解除し、F列にある●●というセルをすべてクリア(空白)しマクロを終了させる。 アドバイスお願いします。

  • エクセルの質問です。

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

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

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

専門家に質問してみよう