• ベストアンサー

オートフィルタで抽出したデータを他のセルに表示

Win2000、OfficeXPを使用しています。 以下のデータがあります。 A B 1 2 3 部名 Gr名 4 経理部 清算Gr 5 システム部 1Gr 6 システム部 1Gr 7 総務部 総務Gr 8 企画部 2Gr オートフィルタで例えば総務部を抽出して以下のようになった場合、 A B 1 2 3 部名 Gr名 7 総務部 総務Gr 抽出された項目名の直下の部名がA1にGr名がB1に自動で表示されるようにするにはどうしたらよいでしょうか?

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

  • ベストアンサー
回答No.3

細工が必要ですが、以下の方法でやってみてください。 データが、100行まで入っているとして、 (1)C列(が空いているとして作業用に)に3行目から1,2,3,・・・97と連番をふります。 (2)A1に =INDIRECT("A"&SUBTOTAL(5,C4:C100)+3)  B1に =INDIRECT("B"&SUBTOTAL(5,C4:C100)+3)  と入力します。 (3)3行目にオートフィルターを掛けます。 これで、通常どおりオートフィルターを掛けると1行目に抽出したデータが表示されます。 フィルターを掛けない時、先頭行のデータが表示されますが、これが期になるようでしたら、 A3行は空欄にしてください(ただし、連番はそのままです)

jinah
質問者

お礼

できました! INDIRECT関数は思いつきませんでした。 どうもありがとうございます。

その他の回答 (2)

  • deecyan
  • ベストアンサー率38% (89/233)
回答No.2

私は関数を作って 求めてます オプションとかトップ10なんか考慮しない時は =Hoge(範囲,何番目のフィルターか) 例 =hoge(A4:A8,1) Function Hoge(in1 As Range, Idx As Integer) If ActiveSheet.AutoFilter.Filters(Idx).On Then Hoge = ActiveSheet.AutoFilter.Filters(1).Criteria1 Else Hoge = "" End If End Function 今回のはこっちを使ったほうが無難かなぁ?(時間かかるけど) A1 に =hogehoge(A4:A8,1) B2 に =hogehoge(B4:B8,1) Function HogeHoge(in1 As Range, Idx As Integer) If ActiveSheet.AutoFilter.Filters(Idx).On Then For ii = 1 To in1.Rows.Count If in1.Cells(ii, 1).Height > 0 Then HogeHoge = in1.Cells(ii, 1).Text Exit Function End If Next Else HogeHoge = "" End If End Function

jinah
質問者

補足

初心者の為、hoge関数というのが全くわかりません。 どういった関数なのでしょうか?

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

>オートフィルタは操作で、結果を該当しないものを非表示にしているに過ぎず、表示で残された7行目の7と言う数字を人間の目以外が掴まえる術はないと思う。 従って本件は不可能でしょう。 私がつい先ほど答えを入れた他の質問NO.1090320を見てもらえば、オートフィルタは使いませんが、関数で解決するのではないかと思う。