例えば元の表がシート1のA列からD列まであるとして1行目には項目名があるとします。オートフィルタは項目名以下の行について行われることになりますね。
そこでフィルタ操作をおかなわない元の表についていくつかの作業列を設けます。
E2セルには次の式を入力して下方にオートフィルドラッグします。
=IF(A2="","",ROW(A1))
F2セルには次の式を入力して下方にオートフィルドラッグします。
=IF(SUBTOTAL(2,INDEX(E:E,ROW()))=1,INDEX(E:E,ROW())+0.5,"")
G2セルには次の式を入力して下方にオートフィルドラッグします。
=IF(ISERROR(SMALL($E:$F,ROW(A1))),"",SMALL($E:$F,ROW(A1)))
H2セルには次の式を入力して下方にオートフィルドラッグします。
=IF(G2="","",RANK(G2,G:G,1))
これらの作業列のデータをもとにシート2に表を作成します。
シート2のA1セルからD1セルにはシート1での項目名を入力するとして、A2セルには次の式を入力してD2セルまでオートフィルドラッグしたのちに下方にもオートフィルドラッグします。
=IF(INDEX(Sheet1!$A:$D,IF(COUNTIF(Sheet1!$E:$E,INDEX(Sheet1!$G:$G,MATCH(ROW(A1),Sheet1!$H:$H,0))),MATCH(INDEX(Sheet1!$G:$G,MATCH(ROW(A1),Sheet1!$H:$H,0)),Sheet1!$E:$E,0),10000),COLUMN(A1))=0,"",INDEX(Sheet1!$A:$D,IF(COUNTIF(Sheet1!$E:$E,INDEX(Sheet1!$G:$G,MATCH(ROW(A1),Sheet1!$H:$H,0))),MATCH(INDEX(Sheet1!$G:$G,MATCH(ROW(A1),Sheet1!$H:$H,0)),Sheet1!$E:$E,0),10000),COLUMN(A1)))
以上の準備作業を行った上でしーと1の項目のどれかでオートフィルタの操作を行ってください。シート2にはお望みの表が表示されます。このシート2の表はシート1でのオートフィルタが行われた状態で有効に働きますのでオートフィルタを解除すればすべての行に空白行が入った表になってしまいます。そこでそれらの影響を無くするためにはオートフィルタを行った後でシート2全体をコピーし、例えばシート3のA2セルを選択してから右クリックし「形式を選択して貼り付け」で「値」にチェックをしては貼り付けを行います。オートフィルタで選ばれた行の下の行に空白行が入った表が得られることになります。
お礼
お礼が遅くなりました。 結局、質問時のデータをどのように処理したか、 本人もわからなくなってしまいましたが おそらくまたこのような作業をすることになると思い その際にはこちらを参照したいと思います。 BAは何度もご回答くださった、こちらに。 皆様ありがとうございました。