シートが 2 つあるので、シート 1 とシート 2 と呼びます。
シート 1 には、本質的にはスコア集計を中心とする次のようなデータがあります。
名前 | 年 | 性別 | スコア |
---|---|---|---|
ジャック | 12 | 男 | 155 |
メアリー | 67 | 女性 | 0 |
ジル | 16 | 女性 | 61 |
サラ | 44 | 女性 | 219 |
ピーター | 5 | 男 | 0 |
ネイサン | 32 | 男 | 0 |
グレッグ | 25 | 男 | 44 |
次に、シート 2 に新しいテーブルを作成し、スコアが 0 より大きいすべての行と、名前とスコアの列のみを次のように収集します。
名前 | スコア |
---|---|
ジャック | 155 |
ジル | 61 |
サラ | 219 |
グレッグ | 44 |
これを継続的に更新したいので、たとえば、メアリーがいくつかのポイントを獲得した場合、テーブルは次のようになります。
名前 | スコア |
---|---|
ジャック | 155 |
メアリー | 21 |
ジル | 61 |
サラ | 219 |
グレッグ | 44 |
また、新規参加者が来て、0 ポイント以上を持っている場合は、それも追加したいと思います。たとえば、Luke が参加した場合:
名前 | スコア |
---|---|
ジャック | 155 |
メアリー | 21 |
ジル | 61 |
サラ | 219 |
グレッグ | 44 |
ルーク | 98 |
どこから始めたらよいのかよくわかりません。Google スプレッドシートで作業していて、INDEX-MATCH を実行しようとしましたが、一致がうまく機能していないようで、表示したい列のペアを選択できないようです。また、継続的に更新する方法もよくわかりません。VBA を使用しないソリューションを希望しており、可能であれば、セル内の数式だけに留めたいと思います。
答え1
Googleスプレッドシートのシート2
テーブルを作成したい場所に次の数式を入力します
=SORT(FILTER(FILTER(Sheet1!A:D,Sheet1!D:D>0),{1,0,0,1}),2,FALSE)
最初のフィルター ' FILTER(Sheet1!A:D,Sheet1!D:D>0)
' は、スコアが 0 より大きいセル範囲とスコア列を選択します。
このフィルターを別のフィルターでラップすると、{1,0,0,1}
最初の列 (名前) と 4 番目の列 (スコア) からのデータ ' ' のみが返されます。
これをラップして 2 番目の列を並べ替え ( 2
)、降順で並べ替えます ( False
)。
Excel 365でこれを行う場合は、Falseを置き換えます。-1