問題タブ [array-formulas]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
5 に答える
1413 参照

excel - 配列数式の効率化を図る

複数のネストされた IF ステートメントを含む SUM 配列数式があり、非常に非効率的です。私の数式は 500 行を超えていますが、簡単なバージョンを次に示します。

ご覧のように、数式の前半では、配列が 0 より大きい場所をチェックし、ゼロより大きい場合は、数式の 2 番目の部分でそれらを合計します。

同じ IF ステートメントが 2 回繰り返されていることに気付くでしょう。これは私にとって非効率的ですが、正しい答えを得る唯一の方法です。

私が持っているサンプルデータは次のとおりです。

スプレッドシートのサンプル データ http://clients.estatemaster.net/SecureClientSite/Download/TempFiles/example.jpg 上記の式を使用すると、この場合の答えは 350 になります。

配列内に MAX ステートメントを入れようとした場合、ゼロより大きい場所を見つけるためにテストを削除すると、次のようになりました。

ただし、各範囲のデータの最初の行のみを計算しているようで、70 という間違った答えが返されました。

数式のサイズを小さくしたり、そこに IF ステートメントを繰り返す必要がないことでより効率的にしたりできることを知っている人はいますか?


アップデート

ジミー

あなたが提案したMAX式は、実際にはすべてのシナリオで機能しませんでした.

以下のように行 1 から 5 のサンプル データを変更した場合 (一部の数値が行 7 から 11 のそれぞれのセルよりも大きく、一部の数値が小さいことを示しています)

スプレッドシートのサンプル データ http://clients.estatemaster.net/SecureClientSite/Download/TempFiles/example2.jpg

私が達成しようとしている正解は 310 ですが、MAX 式は 275 という間違った答えを与えると提案しました。

正しい答えを得るには、式が配列関数である必要があると推測しています。

他の提案はありますか?

0 投票する
2 に答える
885 参照

excel - 複数基準IFの最適化

完了するのに長い時間がかかる配列計算を実行しています。数式をもう少し最適化したいと思います。すべての数式は同じ性質のものです。値の列全体で高レベルの関数(平均、勾配、最小、最大)を実行します。ただし、列内のすべてのセルが配列に含まれているわけではありません。複数のIF基準を使用して、含めるセルを選択します。すべての比較は現在の行に対して行われます。データの例を次に示します。

Eは次のようになります

したがって、E2が計算されたら、列Eを自動入力する必要があります。列F、G、H、...同じアプローチを使用して、操作する別の値または実行する別の関数を選択します。私のデータセットは非常に大きく、これらのいくつかだけで、スプレッドシートの計算に1時間以上かかります。時々、4番目の基準を追加します。他のすべての基準は同じです。

効率はありますか?いくつかの考え:

  1. 列ごとに数千ではなく、列ごとに単一の配列を使用できますか?
  2. 最初の3つの基準を要約して、出力が行番号になるようにすることはできますか?おそらく、後続の数式は複数の基準を検索する必要はありませんが、関数を実行するだけで済みますか?
  3. またはどういうわけかcrtieriaを構築しますか?したがって、新しい列は、会社が同じであるすべての行を返します。別の列は、世代が同じである最初の列からのすべての行を返します...など...
0 投票する
23 に答える
104836 参照

google-apps-script - 列の最後の値の選択

列 G にいくつかの値を含むスプレッドシートがあります。いくつかのセルの間に空のセルがあり、その列の最後の値を別のセルに取得する必要があります。

何かのようなもの:

ただし、それLASTは関数ではありません。

0 投票する
4 に答える
9363 参照

excel - Excelで移動平均を計算する

列の最後の、たとえば 20 個の数値の移動平均を計算したいと考えています。問題は、列の一部のセルが空である可能性があることです。それらは無視する必要があります。例:

最後の 3 つの移動平均は (155+167+201)/3 になります。平均、オフセット、インデックスを使用してこれを実装しようとしましたが、方法がわかりません。私はマクロに少し慣れているので、そのような解決策はうまくいくでしょう:=MovingAverage(A1;3)

ヒントや解決策をありがとう!

0 投票する
2 に答える
184 参照

excel - 数値に基づいて可変量の値を追加する

問題が解決しました

安っぽいミス…笑

ミリ秒を使用していたときの時間列では、言及していないシートの列を使用していました。私はミリ秒間隔の列を使用していました。これでうまくいくと思ったのですが、新しい式が特定の時間に基づいていることを忘れていました。そのため、合計は常に 60000 未満でした。ご協力いただきありがとうございます。2 つの回答を受け入れることができれば幸いです。=)

質問全体を再検討する

以下は私の実際の値の一部です。以前は秒を使用していましたが、実際のドキュメントではミリ秒を使用しています。sumoflist 列は、現在から 60 秒経過したマイナーサムの合計である必要があります。これは 60000 ミリ秒になります。

これは、以前から使用していた正確な式です。はい、正しく入力していましたが、まだ機能していませんでした。シートとミリ秒で動作するように、少し変更する必要がありました。

合計関数は、それらが何歳であってもすべてを合計します。数え方も同じ。

データの小さなチャンクを提供したので、例として 20000 を使用します。これまで私を助けてくれたすべての人に感謝します!そして、私を助け続けてください!<3


0 投票する
3 に答える
10441 参照

excel - Excel 2007 MIN 配列の空白セルを無視する必要がありますが、0 を取得し続けます

ここに私が持っている配列があります:

空のセルでもゼロを返します!

0 投票する
2 に答える
2922 参照

apache - Apache POI と SUMPRODUCT 式の評価

Apache POI を使用してロードし、大量のデータを書き込み、別のファイルとして保存するテンプレート XLS ファイルがあります。XLS ファイルに次のような式があります。

も試した

Excel のセルで Enter キーを押すと、これらは正しく評価されます。ただし、単純に呼び出す

それらを評価しているようには見えず、Excel の [今すぐ計算] ボタンを押しても評価されないため、これは特別な数式または関数であると思います。

他のより従来型COUNTIFの およびSUMIFは問題なく動作しますが、これらでは複数の条件を指定することはできません。

POI は配列数式をサポートしていません。

これらを機能させる方法はありますか。POI バージョン 3.7 を使用しています。

0 投票する
2 に答える
10626 参照

excel - Excel ワークシートですべての配列数式を見つける

特定の Excel スプレッドシートですべての配列数式を検索する方法はありますか?

0 投票する
2 に答える
1491 参照

excel - MaxIfと関連する行情報?

配列数式を使用して、行データの特定のサブセットの最大値を決定します。

これは正常に機能し、A="somestring"であるCの最大値を取得します。

ここで、この「最大」行に関連付けられている文字列である他の列値を返します。直感的には、文字列値が関係しているため、ブール論理乗算戦略を捨てる必要があると思います。これを行うための最良/最もクリーンな方法は何ですか?

0 投票する
3 に答える
17911 参照

excel - VBAを使用してArrayFormulaを多くのExcelセルに設定します

単一の値を出力する配列数式があり、この同じ配列数式を多数のセルに与えたいと考えています。問題は、配列数式を範囲に割り当てると、それぞれが個別の値を出力するのではなく、配列数式への単一の呼び出しの出力をすべて共有するように数式を解釈することです。

私が何を意味するかを示すために、次のコードを使用しています。

私が欲しいのは、次のような結果です。 望ましい結果

範囲内のすべてのセルに個別に配列数式を入力すると、このようになります。

しかし、私が得るのはこれです: 与えられた結果

最初のセルの配列数式の出力は、すべての列で繰り返されます - それらはすべて同じ出力を共有します。

各セルに個別に割り当てられているかのように、配列数式をプログラムで割り当てるにはどうすればよいですか?


式は次のとおりです。

{=INDEX(BatchResults,MATCH(TTID&CHAR(1)&ROW()-1,BatchResultsTTIDS&CHAR(1)&BatchResultsLayers,0),MATCH(A$1,BatchTTIDData!$1:$1,0))}

単一の列ではなく、連結された 2 つの列に対して一致を実行するため、配列数式として配置する必要があります。列の連結は配列として返される必要があるため、数式は配列数式として入力する必要があります。


これまでの最も簡単な解決策は、以下の受け入れられた回答の変形であり、次のとおりです。