「名前」と「声のタイプ」の列がある合唱団のメンバーのテーブルがあります。音声タイプのピッチレベルを下げることによってそれらを並べ替えるクエリを作成するにはどうすればよいですか(つまり、ソプラノ>コントラルト>テナー>ベース)。
MySQLのFIELD()のようなものはGoogleクエリ言語にありますか?
私もSORT関数を試しましたが、カスタム注文のオプションもないようです。
「名前」と「声のタイプ」の列がある合唱団のメンバーのテーブルがあります。音声タイプのピッチレベルを下げることによってそれらを並べ替えるクエリを作成するにはどうすればよいですか(つまり、ソプラノ>コントラルト>テナー>ベース)。
MySQLのFIELD()のようなものはGoogleクエリ言語にありますか?
私もSORT関数を試しましたが、カスタム注文のオプションもないようです。
回答:
カスタムオーダーリストの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文字が重複しないように注意してください。
現在のスプレッドシート内に新しいシートを作成します。その中に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
sort()関数はすでに行と列を返すため、実際にはarrayformula()は必要ありません。
上の画像のD5で(E5ではなく、青い四角形が画像のD5にあるはずです)、次のように入力できます。
=sort(A2:B99,match(B2:B99,{"SOPRANO","CONTRALTO","TENOR","BASS"},0),1)
それでおしまい。
ジープに感謝します。私はこれまでに知らなかったsort()関数でmatch()を使用して、あなたの答えで遊んでいるときにこれを見つけました。