質問

事実上、アルファベットの成績に数値スコアを与えて合計したいと考えています。Excel で、 LOOKUP 関数を配列数式に変換すると機能します。

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

とともに VLOOKUP この関数は機能しません (1 年生のスコアのみを取得します)。Google スプレッドシートには、 LOOKUP 機能と VLOOKUP 以下を使用しても同じように失敗します。

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

または

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

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

役に立ちましたか?

解決 3

あなたの例の数式はまだ見えませんが(値だけ)、結果に関してはまさにそれが私がやろうとしていることです。明らかに、すでに「そばで」実行して個別に合計することができます。私にとって重要なのは、それを 1 つのセルで実行することです。

私は今朝もう一度それを見ました - を使用して MATCH ルックアップ関数は配列数式で機能します。しかしその後、 INDEX 関数はそうではありません。私も一緒に使ってみました OFFSET そして INDIRECT 成功せずに。最後に、 CHOOSE 関数は、選択するリストとしてセル範囲を受け入れないようです。範囲は単一の値 (範囲内の最初のセル) に劣化します。また、 CHOOSE この関数は 30 個の値しか選択できません (ドキュメントによると)。どれもとても迷惑です。ただし、現在は 1 つのセルに有効なソリューションがあります。を使用して CHOOSE 関数を使用し、次のように引数で結果のセルを 1 つずつ明示的にリストします。

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

明らかに、これはあまりうまく拡張できませんが、ルックアップ テーブルが本質的に完全に固定されていることを願っています。大きなルックアップ テーブルの場合、すべてのセルを個別に入力するのは面倒で、人によっては 30 セルの制限を超える場合があります。

よりエレガントなソリューションをぜひ歓迎します。

他のヒント

残念ながら、答えはノーだと思います。ヘルプテキストよりhttp://docs.google.com/support/spreadsheets/bin/answer.py?answer=71291&query=arrayformula&topic=&type=

ARRAYFORMULA の真の力は、これらの計算の 1 つから結果を取得し、それを配列または範囲の引数を取る数式内にラップするときに発揮されます。合計、最大、最小、連結、

vlookup は (最初の引数で) 検索するために 1 つのセルを必要とするため、別の検索範囲を使用しない限り、vlookup を機能させることはできないと思います。

GoogleスプレッドシートにはLOOKUP関数がないようです

おそらく当時はそうではありませんでしたが、現在はそうなっています。

SO27774 example

grades シート1!A2:A4
scoringarray シート1!A2:B4

このスレッドがかなり古いことは知っていますが、私はしばらくの間、同じ問題に悩まされてきました。私はついに解決策を見つけました(まあ、フランケンシュタインの解決策をまとめたものです)。わずかに洗練されているだけですが、大規模なデータ セットを問題なく処理できるはずです。

このソリューションでは以下を使用します。

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

vlookup 関数のサロゲートとして。

これが誰かの役に立てば幸いです!

VR テーブルにハードコーディングすることで、次のように簡単に実行できます。

=SUM(IFERROR(ARRAYFORMULA(VLOOKUP(A2:A, {{"A", 6};
                                         {"B", 5};
                                         {"C", 4};
                                         {"D", 3};
                                         {"E", 2};
                                         {"F", 1}}, 2, 0)), ))

0

または、ルールを含むいくつかのサイドセルを使用することもできます。

=SUM(IFERROR(ARRAYFORMULA(VLOOKUP(A2:A, E2:F, 2, 0)), ))

6


代替案: https://webapps.stackexchange.com/a/123741/186471

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top