- ベストアンサー
エクセル97で、オートフィルタ…
エクセル97でオートフィルタをつかいたいのですが、 A B C D E 1 ○ ▽ ▲ 2 × ● ・ ・ ・ 3 ・ ・ ・ 4 ・ ・ ・ 5 ● × ・ ・ ・ 6 ・ ・ ・ AとBの列でオートフィルタをかけたいのですが、 行の123と345をひとまめてにして検索できるようにしたいんです… そのようなことは可能でしょうか?? またその他によい方法があればよろしくおねがいします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
質問の意味を計りかねていますが、連続した3行単位でフィルタを掛けるのでしょうか。 『行の123、345をひとまめてにして』は『1行目2行目3行目を1つに、4行目5行目6行目を1つに』の意味でしょうか? 質問どおり345が3、4、5行目なら以下は意味をなしません。『3行単位でフィルタを掛ける』ということで回答してみます。 フィルタを掛けるので、1行目は表題(項目名を表示)とします。データは2行目からになります。 質問のようにA~E列があるとします。A、B列の3、6、9、12・・・行目にデータが入っていることになります。 F列とG列を使います。 1.F2に=A3。F3に=A3。F4に=A3 を入力します。 2.F2からF4を選択状態にし、フィルハンドルをダブルクリックしてコピーします。 3.コピーしたF列をG列にコピーします。 これで出来上がりです。 AとBの列でオートフィルタをかける代わりに、F列、G列でフィルタをかけます。 <マクロでの対応> コードを書いてみました。これも1行目は表題(項目名を表示)としています。 A列で指定する値を『G1』、B列で指定する値を『H1』に入力してこのマクロを実行します。 オートフィルタと同じ表示になるはずです。元に戻すには、行を選択して、右クリックから再表示を実行します。 シートのコードウインドウに貼り付けます。 Sub myFilter() Dim selA As String 'A列の指定値 Dim selB As String 'B列の指定値 Dim rw As Long selA = Range("G1").Value selB = Range("H1").Value '全て表示に戻す Rows("2:" & CStr(UsedRange.Rows.Count)).Hidden = False 'A列が不一致なら行を非表示にする If selA <> "" Then For rw = 2 + 1 To Range("C65536").End(xlUp).Row Step 3 If Cells(rw, 1) <> selA Then Rows(CStr(rw - 1) & ":" & CStr(rw + 1)).Hidden = True End If Next End If 'B列が不一致なら行を非表示にする If selB <> "" Then For rw = 2 + 1 To Range("C65536").End(xlUp).Row Step 3 If Cells(rw, 2) <> selB Then Rows(CStr(rw - 1) & ":" & CStr(rw + 1)).Hidden = True End If Next End If End Sub
その他の回答 (1)
- imogasi
- ベストアンサー率27% (4737/17069)
テストデータとしてA1よりB8までに a b 2 7 3 6 4 5 5 4 6 3 7 2 8 1 D4よりE5へ(抽出条件として) a b 4 5 データを作りました。 データ-フィルタ-「フィルタオプションの設定」で「リスト範囲」を Sheet1!$A$1:$B$8に、「検索条件範囲」を$D$4:$E$5にして、OKをクリック。 するとA1からB2に a b 4 5 が残りますがこれではダメですか。(解除はデータ-フィルタ-すべて表示です)。
お礼
ありがとうございました。
お礼
ありがとうございました。解決しました。