web-dev-qa-db-ja.com

Googleシートの列の上位3つの値を合計する

可変数のデータ行を持つGoogleスプレッドシートがあります。特定の列の3つの最高値を合計したいのですが、必ずしも上位3つのセルにあるとは限りません。これまでにデータのある行が1つまたは2つしかない場合は、空のセルをゼロとして扱う必要があります。

どうすればこれを達成できますか?私が考えることができる最も近いものはMAX(A1:A2000)ですが、2番目と3番目に高いものを考慮せずに、1つの非常に高い値のみを取得します。

3
Pops

=ArrayFormula(SUM(IFERROR(LARGE(A1:A2000,{1,2,3}),0)))

説明

  • LARGE は、n番目に大きい要素を返します。
  • IFERROR最初の引数がエラーを返す場合、2番目の引数を返します。
  • {1,2,3}はリテラルの配列です。 Googleスプレッドシートで配列を使用する をご覧ください。
  • ArrayFormulaは、LARGEやIFERRORなどの関数が値の配列を返すようにします。
4
Rubén

おそらく LARGE() を見たいと思うでしょう。

データセットからn番目に大きい要素を返します。nはユーザー定義です。

私が持っている最も簡単ですが、決して最もエレガントな解決策はありません:

=if(iserror(large({data},1)),0,large({data},1))+
if(iserror(large({data},2)),0,large({data},2))+
if(iserror(large({data},3)),0,large({data},3))

(読みやすくするためにキャリッジリターンを追加)

ifiserrorは、関数がエラーをスローした場合に0を返すためにあります。 (たとえば、データに2つの値しかない場合。)

もちろん、large({data},1)は機能的にmax({data})と同等ですが、一貫性を保つためにそのまま残しました。

3
ale