• ベストアンサー

エクセルのデータ整理方法について

マクロではなく、関数等でのやり方を教えて下さい。 今、以下のようなフォーマットで大量のデータがあります。 A1:名前   B2:クラス A2:○○君  B2:1組 A3:△△君  B3:2組 A4:■■さん B4:1組 A5:□□君  B5:3組 これを A1:1組   B1:2組   C1:3組 A2:○○君  B1:△△君  C2:□□君 A3:■■さん のように、クラス別で並べ替えたいと思っています。A2とA3の間に空白のセルができないように整理をしたいのですが、よい方法を教えて下さい。

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

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

[回答番号:No.1]の別解です。 「大量のデータ」の「大量」が 1000行と仮定します。 1.範囲 A2:A400 に次の[条件付き書式]を設定    数式が   =ISERROR(A2)    フォント色 白 2.範囲 A2:A400 を選択(アクティブセルは A2)した後、[数式バー]   にマウスカーソルを置いて、次の配列数式を入力して Ctrl+Enter   で確定    =INDEX(Sheet1!$A$1:$A$1000,SMALL(IF(Sheet1!$B$1:$B$1000=A$1,ROW(A$1:A$1000),""),ROW(A$1:A$1000))) 3.範囲 A2:A400 を右2列にドラッグ&ペースト 【お断り】解説は遠慮します。

その他の回答 (2)

noname#99913
noname#99913
回答No.2

B列をキーにソートして、あとはコピペで。 関数を入れる暇にやってしまえば、こちらが手っ取り早いかと。

TKO1983
質問者

お礼

回答ありがとうございます。データの更新作業が多いため、関数で組みたいところなので、フィルターなどはあまりしたくありません。

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.1

データシートをSheet1、組別シートをSheet2に抽出しますのでSheet2の1行目は組名を入力して下さい。 Sheet2のA2に=IF(COUNTIF(sheet1!$B:$B,A$1)>=ROW(A1),INDEX(Sheet1!$A:$A,SMALL(IF(Sheet1!$B$2:$B$1000=A$1,ROW($A$2:$A$1000),9999),ROW(A1))),"")を設定、縦横に必要分コピーして下さい。 尚、配列数式の為、入力完了時にshift+ctrl+enterキーを同時押下して下さい。

TKO1983
質問者

補足

申し訳ありません。関数が理解できないため、後学のために解説して頂けないないでしょうか。