カスタムオーダーでGoogleスプレッドシートクエリを並べ替える方法


7

「名前」と「声のタイプ」の列がある合唱団のメンバーのテーブルがあります。音声タイプのピッチレベルを下げることによってそれらを並べ替えるクエリを作成するにはどうすればよいですか(つまり、ソプラノ>コントラルト>テナー>ベース)。

MySQLのFIELD()のようなものはGoogleクエリ言語にありますか?

私もSORT関数を試しましたが、カスタム注文のオプションもないようです。


このような並べ替えを設定して、列をクリックして[データ]-> [シートを列で並べ替え]に移動すると、カスタムの順序を使用して並べ替えができるようにしたいと思います。
マイケル

回答:


3

カスタムオーダーリストのSORTにMATCHを追加できます。

    一致するカスタムソートリスト

D5の式は、

=ArrayFormula(sort(A$2:A$99,match(left($B$2:$B$99,3),{"sop";"con";"ten";"bas"},0),1))

E5にコピーします。計算サイクルの速度テストを行わない場合、Left関数を使用して最初の3文字を剥がすことが深刻な悪影響を与えるかどうかは議論の余地がありますが、一致範囲ルックアップの定数配列の作成と作成と維持が容易になります。リストを展開する場合は、最初の3文字が重複しないように注意してください。


数式でこの部分を理解するのに問題があります:=match(left($B$2:$B$99,3),{"sop";"con";"ten";"bas"},0)..私はこれを独自に実行し、このリストを取得しました:{1,4,2,3,4,2,3,1} ..しかし、ソートによるとドキュメントsort_columnである:範囲内の列または並べ替えに使用する値を含む範囲の範囲外の指標 ..私はちょうど2つを調整することができないが..
abbood

6

現在のスプレッドシート内に新しいシートを作成します。その中に2つの列を置きます。

VoiceType   Sort order
SOPRANO     1
CONTRALTO   2
TENOR       3
BASS        4

メインワークシート(人のリストがあるワークシート)の新しい列に、次のような数式を入力します。

=vlookup(upper(B2),Sheet2!A$2:B$5,2,0)

一部の音声タイプが「tenor」または「Tenor」として入力された場合に備えて、UPPER()関数を使用していることに注意してください。

これを示す実際の例があります:https : //docs.google.com/spreadsheets/d/1s8MngBnoJ53czPOLlBJ3DRAbZHc4JZXd0KPeRBM4_tQ/edit?usp=sharing


2

sort()関数はすでに行と列を返すため、実際にはarrayformula()は必要ありません。

上の画像のD5で(E5ではなく、青い四角形が画像のD5にあるはずです)、次のように入力できます。

=sort(A2:B99,match(B2:B99,{"SOPRANO","CONTRALTO","TENOR","BASS"},0),1)

それでおしまい。

ジープに感謝します。私はこれまでに知らなかったsort()関数でmatch()を使用して、あなたの答えで遊んでいるときにこれを見つけました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.