各行が別の列で指定されたグループ内で最高値を持っているかどうかを判断する


1

最も優先度の高い行を見つけたい。

次のように約30,000行のデータがありますTable

Item  Group  Priority  Highest(formula wanted)
A                              TRUE
B     P           2.2          TRUE
C     P             1          FALSE
D                              TRUE
E     Q             2          FALSE
F     Q             4          TRUE
G     Q             1          FALSE

(注:グループが存在する場合にのみ、優先順位が存在します。データに同順位は存在しません。)

HighestTRUE、行にがない場合Group、または同じグループ内で最高の優先度を持つ場合です。上記の例では、アイテムCはグループに属してPいますが、最高の優先度ではありません。アイテムEGはグループのQものですが、最高の優先順位はありません。

私は次の配列式を試してみましたこちら参照):

=IF([@Group]="",TRUE,MAX(([Group]=[@Group])*[Priority]))

ただし、何らかの理由で配列式を受け入れませ。他の計算では元の順序が重要であるため、ソートも受け入れられません。次に、数式を設定するにはどうすればよいですか?


状況は次のとおりです。アドインはデータベースからデータを取得し、スプレッドシートにデータテーブルを自動的に生成します。アドインを使用してカスタム列を作成できますが、アドインがデータテーブルを更新すると、カスタム列の数式は非配列数式になります。配列数式を使用する場合は、数式に移動して、テーブルが更新されるたびにCtrl + Shift + Enterを押す必要があります。
HYC

回答:


1

=OR([@Group]="",LOOKUP(1,0/FREQUENCY(0,1/(1+([Group]=[@Group])*[Priority])),[Priority])=[@Priority])

一方で、配列数式を許可しない理由を知りたいと思います。共有してもらえますか?

よろしく


答えを展開して、式の仕組みを説明できますか?ありがとう。
fixer1234

1
@ fixer1234ここでの一般的な説明があります:excelxor.com/2015/02/22/...
XOR LX
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.