- ベストアンサー
Excelでプルダウンメニューのような・・・
エクセルでデータ→フィルタ→オートフィルターを選択すると通常一行目各列に△印が出てきますよね。あんな感じのフィルターをA列のみに縦型にフィルターを出したいんです。A列には日付が記入されており、一つの日付には15~20行の項目があります(B列に)。日付別にフィルターをかけて一日1行で表示させたいのです。非表示行を選択して右クリック「表示しない」でも出来るのですが、表示させる行はまちまちなので飛びとびに行選択して右クリック「表示しない」を繰り返さなくてはならないのでとても面倒なのです。 やり方を知ってる方教えてください。
- みんなの回答 (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かたまりになっている必要があります。
その他の回答 (5)
- imogasi
- ベストアンサー率27% (4737/17069)
>A列のみに縦型にフィルターを出したいんです 縦型の意味は。この部分不要では。 >一つの日付には15~20行の項目があります(B列に A列には1つの日付は1つの行しかないのですか。 B列はその日に対して、データがあるということ? A列は同じ日付けを入力すべき(または、入力しても良い)ところ、省略してあるということですか。 >日付別にフィルターをかけて A列でフィルタをかけることですね。 >一日1行で表示させたいのです この意味がわからない。合計でもして1行に集約するのですか。 >表示させる行はまちまちなので どういう基準でエラ宇野ですか ーーー 回答者の多くの人が疑問を持っておられるようです。質問した以上、回答の 出具合を、ある程度頻繁に見て、早く補足するぐらいの努力をすべきでしょう。
お礼
ご回答ありがとうございます。下手な記述で質問の意味がわからなくて皆さんにご迷惑をおかけしましたね。どうもすみません。おまけに質問直後に外出しなければならなくなって・・・レスも遅くなり重ねてご迷惑をおかけしました。 A列には日付があって、オートフィルタのようなボタンをクリックすれば展開して全ての(同じ日付)行が表示され、もう一度クリックしたらボタンのある行だけが表示されるように(格納?)したかったんです。できれば任意の複数行にも出来ないかな?と。エラ宇基準はありません。 どうもありがとうございました。
- mshr1962
- ベストアンサー率39% (7417/18945)
#1のmshr1962です。 オートフィルタで行う場合の方法 A列の日付はすべての行にない場合 A列のフィルタの対象を「空白以外のセル」にする。 A列の日付はすべての行にある場合 A列の右に1列挿入 A2=COUNTIF($A$2:$A2,B2) として最終行までコピー これで同日付の行数が出来ます。1でフィルターをかければ1行目が表示
お礼
ご回答ありがとうございます。 教えていただいた方法でトライしてみます。どうもありがとうございました。
- bdr
- ベストアンサー率43% (35/80)
ちょっと質問の意味がわかりません >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を期待しているのであれば、別途考えましょう
補足
回答ありがとうございます。 質問の記述が分かりにくくてすみません。 言い換えればA列をオートフィルタのようなボタン操作で展開&格納?をしたかったんです。 元データは(2)のパターンです。パターンBをこの後やってみます。ありがとうございました。
- zenjee
- ベストアンサー率47% (50/106)
>日付別にフィルターをかけて一日1行で表示 >表示させる行はまちまちなので…… 例えば1日のデータが15~20行あった場合に、そのうち表示させる行はランダムに選ぶのでしょうか、それとも何か選択の基準(例えばその日の最上行など)があるのでしょうか。 もし、何も基準がなく全く任意に選択するのならCTRLキーを押しながら、仰るように非表示にしたい行番号を順次クリックしてゆき、終わったところで書式→行→表示しないをクリックするしかないでしょう。 基準があるのならそれを補足してください。
補足
記述が分かりにくくてすみません。 一日の「売り上げの品目別・メーカー別」に記入してます。ですので20行ある日もあれば40行ある日もあります。その中から任意の数行だけを表示したかったんです。基準はありません。
- mshr1962
- ベストアンサー率39% (7417/18945)
データ→集計 日付の列を対象に掛ければ良いのでは? A列の左に[1][2][3]というボタンが表示され [1]だと最終合計 [2]だと日付の合計 [3]だと明細 という風に表示選択出来ます。
お礼
丁寧なご回答ありがとうございます。自動マクロぐらいは作成した事があるのですが、こういったプログラムは全く分かりません。コピペしてトライしてみます。 ありがとうございました。