アプリ版:「スタンプのみでお礼する」機能のリリースについて

学年名簿をクラス別にシート作成いたしました。
各シートは出席番号順に並んでおり名前と誕生日が入ってます。
各シートの名簿から全生徒を誕生日順で別シートに表示したいのですが、どのような方法がございますか?
宜しくお願い致します。

A 回答 (5件)

No2です



>関数を使ったやり方ですと何を用いればよろしいでしょうか?
書き忘れましたけれど、私がもし方法を選択するなら、手作業>マクロ>関数の順ですね。
関数が(心理的なものも含めて)一番面倒なように感じますので。

とは言え、敢えてご希望のようですので・・・・
・まずシート名の一覧を作ります。
 規則的なシート名なら、関数で作成してもかまいません。

・そのシート名を参照して、関数で各シートの記載人数を求めます。
 例えばA列に空白なく並んでいるとしてよいのなら
 COUNTA関数やCOUNTIF関数で数を数えれば、人数が求められます。
 (これの累計数を同時に作成しておくと後で便利です)

・上記を参照しながら、1列に順に名簿を参照してゆけば全体の一覧ができます。
 自分の行番号が上記の累計を超えない間は、そのシート名のシートを参照すればよいことになります。
 上記の表の作り方にもよりますが、MATCHやLOOKUP系の関数で、どこに該当するか判別可能でしょう。
 シート名が決まれば、自分の行番号からそれまでのシートの累計を減じた行番号をそのシートから参照すれば良いことになります。

※ 説明の途中ですが、長さの異なる列データを一列に詰めて纏める質問が最近あったのを思い出しましたので、ご参考までに挙げておきます。
(この例では、同じシート内の異なる長さの列を一つの列にまとめるケースですが)
https://oshiete.goo.ne.jp/qa/12525442.html
手順として、ここまでの手順と同様のこと(同一シートなので、その分簡単ですが)を関数で行っています。
とは言え、一気にまとめて求める関数式にしてしまっているので、ご質問のケースでは使えませんけれど、考え方としては似た考え方をしています。(実際には少し別の考え方ですが)
一方で、関数をまとめるよりも、分解して上記のような作業列を利用して行う方法をとるほうが遥かに簡単になります。


・ところで、上記のような面倒なことをしなくても、各シートの上限(例えば40人とか)を決められるなら、各シートから40行ずつを固定で順に参照する方が遥かに簡単にできます。
(シート内の人数を数えたり、それまでに参照した人数を計算する必要がなくなりますので)
40人に満たない場合には途中に空白行ができますけれど、それは次の並べ替えで対象外と判断するようにしておけば処理できるでしょう。

・全生徒の一覧ができたなら、RANK関数で誕生日の順序付けを行っておきます。
 (同じ誕生日の生徒にも順序を付けておきたいので、学生番号を利用するとか、行番号を利用するなどで必ず順序が重複しないようにしておきます。)
上に述べた空白行を含むような方法の場合は、ここで順序付けの対象から外すようにしておくと良いでしょう。

・上記の順序を検索して、順序の順に別の列に表示すれば、誕生日順の一覧が出来上がります。

※ 元の誕生日データが年を含むような場合は、当然ながら学年別に並ぶことになります。
 そうではなくて、「月日の順だけで並び替えたい」などというのであれば、別列に「年を除いた月日のデータ」を関数で作成してそちらを参照するなどの工夫が必要になるでしょう。


・・・と長々と書きましたけれど、
ご質問のご様子から察するところ、これを読んでも全く手がつかないのではないかと懸念します。

シート数(クラス)がいくつあるのか知りませんけれど・・・
>コピーだとそれを行う人が必要になってしまうので
関数やマクロを作成するのにもそれなりの人手がかかります。
最初に書きましたように、手作業が一番手軽で速いのではと感じますけれど・・・

ちなみに、この回答(文章)を書くのにもそれなりの時間がかかっていますし、それだけの時間があれば数十クラス分のコピペくらいならとっくに終わっているものと推測します。
    • good
    • 0

No.1の者です。



参考までに、全部で何クラス位あるのでしょうか? 全学年の全クラス?

マクロや、関数(私には、この関数は難しくてお答えできません。)ですが、
 何かトラブルがあった場合に、直せないと困るかと思いまして。

転校や転入で、月に何回位、修正が必要か分かりませんが、手作業でも
 そこまで手間ではないかと思いますが、如何でしょうか?
 1人、2人でしたら、2回ずつ繰り返すだけの様な気がします。

因みに、全シートを手作業でやろうとすると、下記の様な感じかと。
連続データでしたら、左上のデータを選んで、Ctrl + Shift + :で範囲選択
 Ctrl + Cでコピー、新規シートを選択(シートが沢山あるなら、シートタブの更に左側の部分で右クリックで一覧表示から、シート選択も可)、
貼り付け先のセルを選択して、Ctrl + Vで貼り付け。
次のシートも同じく、範囲選択、コピー、シート選択、データの左上などを
 選択し、Ctrl + ↓で、データの最後へ、貼り付け先セルを選択し、貼り付け。これを、全クラス繰り返す。
全部貼り付けが終わったら、並び替えをすれば終了かと。
クラス数にもよりますが、15分も掛からないかと思います。

あとは、上記をマクロの記録で、1回目のCtrl + Vまでを記録し、
 繰り返し分を、For Each文などを使ってになるかと思います。

関数は、私には難しくてお答えできませんので、パスします。
    • good
    • 0

横からごめんなさい。


『全生徒の名簿シートを作成しておいて、そこからクラス別のシートを作る』
のが一般的な方法じゃないですか。
>毎年、担任に名簿更新をしてもらってそれを反映したいので
基本的な名前や誕生日などは毎年の更新は必要ないですよね。
    • good
    • 0

こんにちは



>どのような方法がございますか?
いろいろあると思います。
方法によって、手間や必要になる知識がそれぞれ違いますけれど・・・
すぐに思いつける、代表的な方法を以下に挙げておきます。

◇手作業による方法
・各クラスの番号、名前、誕生日をひとつのシートにコピペ
・誕生日をキーにして並び替え

◇関数による方法
(作業列等を用いて、順に求めるのが比較的楽です)
・関数で各シートの生徒数を求める
・各生徒数に応じて、一つのシートに一覧表示
・上記の表を元に、関数で別列に誕生日順に並べ替え

◇マクロによる方法
・手作業の内容をマクロで行う

※ クラス数によっても、それぞれの方法で面倒さが変わる可能性はあります。
    • good
    • 1
この回答へのお礼

ご回答ありがとうございます。
関数を使ったやり方ですと何を用いればよろしいでしょうか?
再度質問して申し訳ございません。
よろしくお願いいたします。

お礼日時:2021/08/27 14:53

こんにちは。



全シートのデータを、新規のシートを作成し、全てコピー。
誕生日でソートすれば良いのでは?
(同じ誕生日の場合、どうするかは、考慮する必要があるかも。)
    • good
    • 0
この回答へのお礼

回答いただきありがとうございます。
できればコピー以外をと考えております。
毎年、担任に名簿更新をしてもらってそれを反映したいので
コピーだとそれを行う人が必要になってしまうので
コピー以外でやりたいです

お礼日時:2021/08/27 14:48

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!