質問: やりたいことイメージ ・【戦闘力まとめシート】について 戦闘力のデータシートです。 このシートの値を抽出し、Bシートでグループ分けしたいイメージです。 ![イメージ説明](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/056f8f1698668e3d52b0f52e6db53dcd.png) ・【グループ分けシート】について 赤い実行ボタンを押すと、 グループ分けしたい班の数に応じて戦闘力まとめシートから抽出した内容をグループ分けシートに均等に自動でグループ分けするイメージです。 ![イメージ説明](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/9aba337cebb059f29a509e88deaed9aa.png) ・【グループ分けシート】の実行ボタンを押した際にやりたいこと(順不同) 1 【戦闘力まとめシート】の出席できる方(○、×、△の三種類)のみ抽出し、ついでに職業と戦闘力も抽出する。(実際は100人います。) ※ ○ と △ のみ抽出する。 × は抽出しない。 2 【グループ分けシート】のユーザーが入力した[グループ分けしたい班の数]に応じてグループ分けできること(実際は20グループくらいになる予定です。) 3 【グループ分けシート】戦闘力の数値を均等に各グループに分配したい。 4 【グループ分けシート】には名前だけじゃなく、職業と戦闘力も記載されるようにしたい。 5 【グループ分けシート】グループ分けの条件は [グループ数] と [出欠] と [戦闘力] の3つのみ。(職業はグループ分けの条件に含まない。) 自分の検索したこと ・JS,GASでコードかけるのか。と思い「データ集計、グループ分け」などで検索したが、近しいものが何も検索にヒットしない。 ・JS,GASでコードをかくことに拘ってはいないので、何か関数で何かできるのか。と検索したが自分のやりたいことに近しいものはヒットせず・・・。 どうやればいいのか全くわからず困っています。 よろしくお願い致します。m(_ _)m
回答: やりたいことをGASや関数で処理できるように落とし込むと、 1.まとめシートを出欠の〇、△でフィルター 2.戦闘力の高い方から降順に並び替え 3.グループのメンバーの戦闘力合計値が一番低いグループに上から順にメンバーを入れていく 4.グループ分けシートに書き出し って流れですかね。このままだと、どうしても毎回戦闘力トップの人がグループ1に入っちゃうので、上位メンバー(グループに入れていく1巡目)をランダムに並び替えしてから、3の処理とした方がいいかも。 GASでやった方が良さそうですが、作業用シートを用意してQueryで1,2を実行すれば関数でも多分可能。 あとは自力で作れるとこまで頑張ってください。