- 締切済み
エクセル 学校のクラス分けのやり方
教えてください。 1枚のシートに,一覧になっているデータがあります。 A列に通し番号 B列に氏名 C列にクラス名 D列に保護者名 ・・・。 このデータをもとに, 別のシートにクラスごとの名簿を作成したいのです。 この別のシート(1組)に, A列に通し番号(1組の) B列に氏名 C列に1 D列に保護者名 ・・・。 また,別のシート(2組)に, A列に通し番号(2組の) B列に氏名 C列に2 D列に保護者名 ・・・。 とやってみたいのです。 よろしくお願いいたします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- imogasi
- ベストアンサー率27% (4737/17069)
架空の例なのだろうが、質問の表現がおかしいと思う。 >学校のクラス分けのやり方 ではなくて 学校のクラス分けされたクラス名で、クラス別に、表示や印刷をしたい という問題だろう。 これをはっきり表現できるレベルになっていることが必要。 たまにクラスわけ(人選)のようなことを、コンピュター(エクセルなど)でやれないかという発想はありえるが(難しいが) ーー 普通はVBAとかを使うが、質問者は、エクセルの初心者らしいから、エクセル操作のフィルタで、クラス名を指定して、出てきた結果をコクラス別の別シートにピー貼り付けする、という方法しかないだろう。 Googleででも「エクセル フィルタ コピー」で照会 http://okwave.jp/qa/q2257336.html など ーー クラス名の列でソートして、クラスの区切りを目視でとらえ、1クラス分を範囲指定して、コピーし、クラス別に、別シートにピー貼り付けするのも良いかも。 ーー 関数のもんあぢととらえると 関数による抜き出し問題は、式が複雑になって、初心者には理解も無理と思う。 興味があれば、Googleで「imogasi方式」で照会すれば、数百の抜き出しの質問例が出て、私以外の回答に、式の非常に長い回答がある。 それを見れば様子はわかる。
- KURUMITO
- ベストアンサー率42% (1835/4283)
フィルタ操作で表を作るにはそれなりの知識が必要ですし、データが追加されたり訂正された場合にはその都度忘れずにフィルタ操作をしなければ常に正確な表となっているわけではありません。それに比べて関数で対応すれば瞬時にデータの変更がされ常に正確な表が出来上がります。最初の表作りは多少面倒ですがその後は初心者でも使うことができますね。 シート1には一覧のデータがあるとしてA列からD列の1行目にはお示しの項目名が有って2行目から下方にデータが入力されているとします。そこで作業列をE列に作ってE2セルには次の式を入力して下方にオートフィルドラッグコピーします。 =IF(C2="","",C2&"/"&COUNTIF(C$2:C2,C2)) 次にお望みの表を別のシートにクラスごとに作るわけですが初めに別のシートの一つを選択してアクティブなシートにします。その後にCtrlキーを押しながらシート見出しでその他のシート名をクリックします。これによって作業グループが形成されます。 そこでアクティブシートについて次の操作を行います。 A1セルにはクラス名を入力することにして1などと入力します。 A2セルには番号、B2セルには氏名、C2セルにはクラス名、D2セルには保護者名と文字列を入力します。 A3セルには次の式を入力して下方にオートフィルドラッグコピーします。 =IF(ROW(A1)>COUNTIF(Sheet1!$C:$C,$A$1),"",ROW(A1)) B3セルには次の式を入力して右横方向にオートフィルドラッグコピーしたのちに下方にもオートフィルドラッグコピーします。 =IF(OR(B$2="",$A3=""),"",INDEX(Sheet1!$B:$D,MATCH($A$1&"/"&ROW(A1),Sheet1!$E:$E,0),COLUMN(A1))) 以上で作業グループでの操作は終了です。作業グループを解消するためにはシート見出しで右クリックして「作業グループの解除」を選択するか、あるいはシート1を選択します。 作業グループに指定したすべてのシートにはA1セルに1が表示され1組のデータが表示されていますが、そのA1セルのデータを2にすることで2組のデータが表示されます。 なお、シート1で使ったクラス名が1組では1と表の中で使っている場合にはA1セルには1と入力しますが1組と入力している場合にはA1セルには1組と入力してください。
- keithin
- ベストアンサー率66% (5278/7941)
ご利用のエクセルのバージョンも不明のご相談ですが,Excel2007以降を使っているならホームタブの「並べ替えとフィルタ▼」から「オートフィルタ」を,Excel2003以前を使っているならデータメニューのフィルタから「オートフィルタ」を表に取り付けます。 C列に先頭セルに着いた▼をプルダウンして「1」組の生徒を絞り込み,丸ごとコピーしてシート2に貼り付けます。 C列の先頭セルに付いた▼をプルダウンして今度は「2」組の生徒を絞り込み,丸ごとコピーしてシート3に貼り付けます。 以下同順で,クラスごとに絞り直してはコピーして,各組シートに貼り付けていきます。 最後に各クラスに振り分けたシートで,A列(全体の通し番号)とB列(名前)の間に1列空列を挿入し,改めて1番から順に「クラス内での通し番号」を追加します。全体番号(生徒番号と読み替えてもよいです)とクラス番号は,書き換えるのではなく併記します。 #参考 「連番」の記入の仕方 1行目に数字の1を記入する 2行目に数字の2を記入する 1行目の1と2行目の2の2つのセルを選択し,下向けにオートフィルドラッグする #参考 「オートフィルドラッグ」とは,セル(又は複数のセル:セル範囲)を選んだときに,選択範囲の右下に小さく表示される■を下向けや右向けに引っ張る(ドラッグする)操作のこと #以下余談 こういう操作は,間違っても「関数でやるモノ」じゃありません。初心者さんは「何でもかんでも関数で出来ますか」ってすぐに行きがちで,確かにやればできますけどね。 また,エクセルに慣れてくると「そもそもシートを分ける必要もない」ということも,次第に判ってきます。 #参考 全体シートのA列に一列から列を挿入する するとD列にクラス名が入っている 挿入した空列のA2セルに =D2&TEXT(COUNTIF($D$2:D2,D2),"-00") と数式を記入,リストの下端までオートフィルドラッグする すると「各クラスごとの通し番号」がクラス番号付きで計算で並ぶので,各クラスシートではVLOOKUP関数でデータを上から順に求めて並べていく。