2


1

Google Spreadsheetsの配列式でVLOOKUPを使用する

効果的に私はアルファベットの成績に数値のスコアを与え、それらを合計したいです。 Excelでは、 `LOOKUP`関数を配列式に入れることはうまくいきます:

{=SUM(LOOKUP(grades, scoringarray))}

VLOOKUP`関数ではこれは機能しません(一年生のスコアだけを取得します)。 Google Spreadsheetsは `LOOKUP`関数を持っていないようで、 VLOOKUP`は同じように失敗します:

=SUM(ARRAYFORMULA(VLOOKUP(grades, scoresarray, 2, 0)))

or

=ARRAYFORMULA(SUM(VLOOKUP(grades, scoresarray, 2, 0)))

これは可能ですか(でも構文が間違っています)。 ルックアップを他の場所に隠して後で合計するのではなく、このように1つの単純なセルで計算する方法を提案できますか。

4 Answer


2


_ ARRAYFORMULAの真の力は、これらの計算の1つから結果を取得し、配列または範囲の引数をとる数式でそれをラップするときに得られます。SUM、MAX、MIN、CONCATENATE、 _

vlookupは(最初の引数で)ルックアップに単一のセルを使用するので、別の範囲のルックアップを使用しなくても動作するようにできるとは思いません。


1


_ GoogleスプレッドシートにLOOKUP機能がないようです _

おそらくそうではありませんが、それは今持っています:

SO27774の例

「等級」Sheet1!A2:A4「スコアリングアレイ」Sheet1!A2:B4


0


私はまだあなたの例では式(単なる値)を見ることができませんが、それはまさに私が結果の観点からやろうとしていることです。明らかに私はすでに「そばで」それを別々に行うことができます - 私にとっての鍵はそれを一つのセルですることです。

私は今朝再びそれを見ました - ルックアップのために MATCH`関数を使うことは配列式で働きます。 しかし、そのとき `INDEX`関数はしません。 私はまたそれを `OFFSET`と INDIRECT`と一緒に使っても成功しませんでした。 最後に、 `CHOOSE`関数は選択するリストとしてセル範囲を受け入れないようです - 範囲は単一の値(範囲の最初のセル)に低下します。 また、 `CHOOSE`関数は30個の値から選択することができます(ドキュメントによると)。 すべて非常に迷惑です。 しかし、私は今1つのセルの中で実用的な解決策を持っています: `CHOOSE`関数を使い、次のように引数の中に結果のセルを一つずつ明示的にリストします:

=ARRAYFORMULA(SUM(CHOOSE(MATCH(D1:D8,Lookups!$A$1:$A$3,0),
                                     Lookups!$B$1,Lookups!$B$2,Lookups!$B$3)))

明らかにこれはあまり拡張されていませんが、うまくいけばルックアップテーブルは本質的にかなり修正されています。 大きなルックアップテーブルでは、すべてのセルを個別に入力するのは面倒であり、30人のセルの制限を超える人もいます。

私は確かにもっとエレガントな解決策を歓迎するでしょう!


0


私はこのスレッドがかなり古いことを知っています、しかし私はしばらくの間この同じ問題に苦しんでいました。 私はついに解決策に出会いました(よく、Frankenstienedは一緒に解決しました)。 もう少しエレガントですが、大規模なデータセットでも問題なく動作するはずです。

解決策は以下を使用します。

=ARRAYFORMULA(SUM(INDIRECT(ADDRESS(MATCH(), 一致())))

vlookup関数の代理として。

これが誰かに役立つことを願っています!