Excelで空の値を返す「if」関数を持つフィールドを最適化する方法は?


0

これはスクリーンショットです。元のスクリーンショットを投稿できないため、これは単なる例です。

これはスクリーンショットです。元のスクリーンショットは投稿できないため、これは単なる例です

このワークシートを作成して、この従業員がその日付に勤務する予定があるかどうかについての情報が記載された別のシートと現在の従業員を照合しました。

D1、D2、D3列で使用した関数は、D1の例のようになります。

=IF([@Date]=DATE(2016,7,1),VLOOKUP([@ID],(*array on another sheet*),3,false),"")  

日付が7/1/16かどうかをチェックし、結果を返します。そうでない場合は空白を返し、この関数は30列(D1からD30 / D31)。論理値がfalseを返す場合、関数が空の値を返すフィールドが非常に多くあるため、メモリの消費が少なくて速くなるように、関数をスキップする方法はありますか?


1
私の理解では、Excelは必要なものだけを評価するように最適化されています。数式内のすべてのブランチを完全に評価してからロジックを適用するのではなく、結論に達するまで数式構造全体を処理し、不要なブランチを評価しません。(未使用のブランチのエラー条件が式を強制終了しない理由。)大規模なスプレッドシートの場合、最も可能性の高いケースと最小の計算が埋もれた「ELSE」条件ではなく最初に処理されるように式を構成します。あなたの例では、IF(@date <> date、 ""、vlookup)の方が良いでしょう。
fixer1234

実際、条件が1つしかないため、この場合、順序はおそらく違いはないと思いました。それを評価する必要があり、結果はいずれかのパスにつながるため、他のコメントの最後に示されているシーケンスはおそらく同じ結果をもたらします。ネストされたIFがある場合、外側のIFを使用して、最小限の作業で最大数のケースを解決し、連続する各レイヤーに同じ戦略を使用します。最も少ないケースに適用されるヘビーデューティコンピューティングには、最も内側のブランチを使用します。
fixer1234

回答:


1

いいえ、Excelには数式の評価方法を制御する方法はありませんが、改善する方法がいくつかあります。

  • 毎日個別の列が本当に必要ですか?式(DATE (...))の日付をハードコーディングする代わりに、最初の列([@date])を 参照できます。
  • 自動計算をオフにして、必要な場合にのみ手動で計算できます
  • ファイルをバイナリブック(.xlsb)として保存すると、必要なスペースが少なくなり、パフォーマンスが向上します(欠点は互換性です)。

いいえ、簡単にフィルタリングできるように作成しました。計算が必要な行にのみ手動で関数をコピーする別のバージョンがあります。そこで、このバージョンを作成して、上の行に1つの関数のみを入力し、それをすべての行にコピーしようとしましたが、高価でした。
エドウィンハーリー

1
フィルタリング中にこのレイアウトに利点があるのはなぜですか?ここでの問題は、Excelのパフォーマンスではなく、テーブルのレイアウトです。間違った場所で最適化を探しています。関数ではなく、テーブルのレイアウトを最適化する必要があります。現在のテーブルでできることはすべて、最適化されたテーブルでも可能です。
マテジュハス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.