見出し画像

麻雀データ管理(初級編)Vol.4

こんにちは。
今回からは前回までに作った集計表をもとにトータルポイント順に並べ替えた表の作成方法を紹介していきます。

集計表をトータルポイント順に並べ替えるにはいくつかの方法があります。
Spreadsheetのフィルター機能を使う方法、sort関数・sortn関数を使う方法、query関数を使う方法など色々ありますが、今回はsort関数を使って並べ替える方法を紹介したいと思います。

1.集計表をコピー

ここではトータルポイント順に並べ替える表を前回までに作った集計表の隣に作っていきます。
まずはじめに集計表の罫線と項目はそのまま利用したいので、B列からL列までをコピーしN列に貼り付け、N列からX列のセル内に入っているすべての数式をDeleteキーで消しておきます。

表の上部に集計表・トータルポイントランキングとタイトルを付け、見やすくするためにグリッド線を消してみました。
グリッド線の消し方は上部の「表示」タブから「表示」→「グリッド線」の✔を外せば消すことが出来ます。

2.sort関数でトータルポイント順に並べ替え

参加人数が決まっていて、これ以上増えないのであればこの方法が一番簡単かと思います。
sort関数の構文は「=sort(範囲,並び替える列,昇順or降順,並び替える列2,昇順or降順2・・・)」となり複数の条件で並び替えが出来るのですが、ここではトータルポイントのみで並び替えを行っていきます。
N3セルに「=sort(B3:L13,3,0)」数式を入力するだけです。とっても簡単ですね。

第1引数のB3:L13は集計表のデータ範囲(項目は含まない)を、第2引数の3は範囲内の何列目を基準に並び替えるかを、第3引数の0は昇順か降順かを指定しています。
昇順か降順かの指定は10又はtruefalseで指定できます。

3.sort関数の範囲指定を自動で変更

上の解説で並び替える方法はとっても簡単なのですが参加人数が増えるたびに数式を書き換え、範囲を広げていかないとうまく対応できません。
そこでsort関数内で指定した範囲を参加人数が増えた場合自動で広げられる方法を紹介したいと思います。

それには私はcounta関数とindirect関数を利用しています。

counta関数とは指定した範囲内のデータの個数を求める関数。
構文は「=counta(範囲1,範囲2,…)」

indirect関数とはセルの参照を文字列で指定する関数です。
構文は「=indirect(参照文字列,[参照形式])」で参照形式は省略可能です。
ちょっとだけ難しい関数になり、私の文章力ではうまく説明出来ないので、この記事の一番下にindirect関数の解説をされているYouTube動画のリンクをいくつか貼っておきますね。

ではやっていきましょう。
上で示したsort関数の第1引数である「B3:L13」が並び替えをする範囲になりますが、人数が増えた場合には一番最後の13だけ変更すればいいわけですから、それをcounta関数で求めます。
「=counta(B$3:B)+2」となります。
つまり集計表の名前の項目に表示されている人数に上の2行を足してあげれば、集計表に現在表示されているデータの最終行番号が求められます。

これをindirect関数の中に組み込めば自動変更される範囲の数式が出来ます。
「=indirect("B3:L"&counta(B$3:B)+2)」
実際にこの数式を任意の場所に入力してみると下の画像のようになり、現在集計表に表示されているデータ範囲を自動で求める数式が出来ました。

あとは最初に作った数式「=sort(B3:L13,3,0)」の範囲部分「B3:L13」を「indirect("B3:L"&counta(B$3:B)+2)」に変更して
=sort(indirect("B3:L"&counta(B$3:B)+2),3,0)」としN3セルに入力すれば良いわけです。

では今回はこのへんで。

indirect関数を解説しているYouTube動画

これらの動画はエクセルについて解説されてますが、GoogleSpreadsheetでも使い方は同じです。



この記事が気に入ったらサポートをしてみませんか?