• ベストアンサー

エクセルで質問です。

エクセルで質問です。 sheet1に     A     B      C     D 1  No.   グループ    氏名   住所 2 3  1     C      佐藤    東京 4  2     B      鈴木    埼玉 5  3     A      加藤    千葉 6  4     B      本多    東京 このようなデータがたくさんあります。(左の数字は行番号、上のアルファベットは列番号) これを別シートにグループ順に   A     B      C     D 1  No.   グループ    氏名   住所 2 3  1     A      加藤    千葉 4  2     B      鈴木    埼玉 5  3     B      本多    東京 6  4     C      佐藤    東京 と表示させる方法はありますか。 エクセルに詳しくないのですが どなたか助けていただければと思います。

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

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.6

No.3です! 前回は >これを別シートにグループ順に を見逃していました。 前回の方法は無視してください。 ↓の画像で左側がSheet1で右側のSheet2に表示する一例です。 Sheet1に作業用の列を設けます。 作業列E3セルに =IF(B3="","",COUNTIF(B:B,"<"&B3)+COUNTIF(B$3:B3,B3)) という数式を入れオートフィルでずぃ~~~!っと下へコピー! Sheet2の A3セルに =IF(B3="","",ROW(A1)) B3セルに =IF(COUNT(Sheet1!$E:$E)<ROW(A1),"",INDEX(Sheet1!B:B,MATCH(ROW(A1),Sheet1!$E:$E,0))) という数式を入れ、D3セルまで列方向にオートフィルでコピー! 最後にA3~D3セルを範囲指定 → D3セルのフィルハンドルで下へコピーすると 画像のような感じになります。m(_ _)m

sakurrider
質問者

お礼

再度 チャレンジしてみたらうまくできました。 とても詳しく教えてくださり ありがとうございました。 もっと関数を勉強したいと思います。

sakurrider
質問者

補足

この通りに作ってみたらできたのですが、既存のデータでやろうとすると 「値の更新」というウィンドウが出てファイルを指定するよう指示が出ます。 うまくできません。 お手数ですが原因がわかりませんので教えていただけると助かります。 何度も申し訳ありません。

その他の回答 (5)

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.5

シート1にデータが入力されたら即座にシート2の結果に反映されるようにするためには関数を使った方法がおすすめです。 複雑な配列式などを使った方法ではデータが多くなれば計算に負担がかかりますので作業列を使った方法がおすすめです。 シート1ではデータがお示しのように3行目から下方に入力されているとしてE列を作業列としてE3セルには次の式を入力して下方にドラッグコピーします。 =IF(B3="","",IF(COUNTIF(B$3:B3,B3)=1,CODE(B3)*10000,INDEX(E$2:E2,MATCH(B3,B$2:B2,0))+COUNTIF(B$2:B2,B3))) シート2ではA1セルからD1セルにかけてお示しの項目名が入力されているとします。 A3セルには次の式を入力して右横方向にドラッグコピーしたのちに下方にもドラッグコピーします。 =IF(ROW(A1)>COUNTA(Sheet1!$B$3:$B$10000),"",IF(COLUMN(A1)=1,ROW(A1),IF(COLUMN(A1)<=4,INDEX(Sheet1!$A:$D,MATCH(SMALL(Sheet1!$E:$E,ROW(A1)),Sheet1!$E:$E,0),COLUMN(A1)),""))) これでシート1にデータが入力されれば即座にシート2の表が変わります。

sakurrider
質問者

お礼

ありがとうございます。 関数がたくさんですね(@_@) ここまでのネストになるともう私には理解できません。 詳しく教えてくださりありがとうございました。

  • tsline
  • ベストアンサー率21% (275/1260)
回答No.4

B3:D6までの範囲を選択して昇順に並び替え

sakurrider
質問者

お礼

ありがとうございます。

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.3

こんにちは! A列はそのままでB列以降を並び替えれば良いのですよね? B2以降D列の最終行を範囲指定  → Excel2007以降の場合は データ → 並び替え → 「最優先されるキー」でB列を選択 → 「順序」は「昇順」を選択しOK これで大丈夫だと思います。m(_ _)m

sakurrider
質問者

お礼

ありがとうございます。 やはりみなさん「並べ替え」なんですね。

noname#235638
noname#235638
回答No.2

Sheet1のコピーをつくる。  Sheet1の上で右クリック→移動またはコピーを選択  コピーを作成するにチェックを入れOK Bの上で左クリックしてそのままD列まで移動してはなす。 B列からD列まで選択できたら、「データ」→「並べ替え」 最優先されるキーで「列B」を選択 「昇順」を選んで「OK」 エクセルのバージョンが私にはわかりませんので アレですけど、こんな感じです。

sakurrider
質問者

お礼

ありがとうございます。 説明不足でした。 自分も最初並べ替えでやろうと思ったんですが データが入力されるたびに並べ替えするのは面倒だと思いまして 関数などでどうにかならないかと。

  • vqm37837
  • ベストアンサー率40% (92/229)
回答No.1

少し、質問の意図がうまく解釈できていないかもしれませんが、 ホームの編集に「並び替えとフィルタ」があります。 範囲を設定して、或いはシート全体でも構いませんが ユーザー設定の並び替えで、優先列順に降順・昇順を指定して並び替えが可能です。 並び替えた状態のシートをつくりたいのであれば 全体をコピーして、形式を選択して貼り付けの値をチェックして張り付ければ出来上がりです。

sakurrider
質問者

お礼

ありがとうございます。 「並べ替え」はできるのですが、都度入力の手間を考えると もっと何かいい方法がないかと思ったのですが。

sakurrider
質問者

補足

説明不足で済みません。 データは都度入力されるので、「並べ替え」以外に 関数などで自動的に別シートに反映されればと思ったんですが。。。 横着ですみません。