• ベストアンサー

エクセル97で、オートフィルタ…

エクセル97でオートフィルタをつかいたいのですが、    A   B   C   D   E 1          ○   ▽   ▲ 2  ×   ●   ・   ・   ・ 3          ・   ・   ・ 4          ・   ・   ・ 5  ●   ×   ・   ・   ・ 6          ・   ・   ・ AとBの列でオートフィルタをかけたいのですが、 行の123と345をひとまめてにして検索できるようにしたいんです… そのようなことは可能でしょうか?? またその他によい方法があればよろしくおねがいします。

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

  • ベストアンサー
  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.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

goommm
質問者

お礼

ありがとうございました。解決しました。

その他の回答 (1)

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

テストデータとして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 が残りますがこれではダメですか。(解除はデータ-フィルタ-すべて表示です)。

goommm
質問者

お礼

ありがとうございました。