次の構造を持つ長い式があります:
=IF(!X!<>0,!X!+A1,"")
どこ!X!非常に長い式です。
!X!の繰り返しを避けるための解決策はありますか?二回?2つの理由で必要です。
- シートのユーザーが数式を読みやすくするには
- 処理時間を短縮するには
どんな助けにも感謝します。
ありがとう、Dio
次の構造を持つ長い式があります:
=IF(!X!<>0,!X!+A1,"")
どこ!X!非常に長い式です。
!X!の繰り返しを避けるための解決策はありますか?二回?2つの理由で必要です。
どんな助けにも感謝します。
ありがとう、Dio
回答:
別のアプローチは二重反転を使用することです:
=IFERROR(1/(1/really_long_formula)+A1,"")
really_long_formulaの評価が0の場合、ゼロで除算され、それIFERROR()
をキャッチします!
この要件を処理する通常の方法(および最良の方法)はヘルパーセルを使用することに注意してください。
1/1/x
Excelで100,000個の乱数を数回テストしましたが、丸め誤差が発生したのは時間の1.4%だけでした。私が見つけた最大の相対誤差は1.6e-16でした。これは、事実上、ゼロです。また、興味深いことに、整数は丸め誤差を表示しませんでした(0から1e14までのいくつかの範囲をテストしました)。したがって、この答えは、純粋さ/清潔さの観点からは嫌われるかもしれませんが、実際の計算の観点からはそうではありません。
明白な答えは、数式をメインシートから離れた作業セルに配置することです。たとえば、を使用する場合は、次のようH1
に設定します。
=!X!
次に、式は次のようになります。
=IF(H1<>0,H1+A1,"")
これは、他のプログラミング言語で行うことの典型です。
1/(1/x)
常にとまったく同じではありませんx
)。また、より一般的には適用できません(たとえば、ゼロ未満かどうかのチェック)。(コメントは@LưuVĩnhPhúcの承認されていない回答と交差しました。)
""
偽りのケースになるために結果が本当に必要ですか?あなただけのセルが必要な場合は見た目の空白を(例えば、あなたのようなものを使用しません=ISNUMBER()
、あなたが使用することができ、後でその上を)条件付き書式を誤った場合の内容を非表示にします。
何も表示しないようにセルに適用する条件付きフォーマットは""
、次のようなカスタムフォーマットです(ポルトガル語ですが、アイデアがわかります)。
セル内の数式は、予想通り、単純になり=!X!+A1
ます。
条件付き書式の式はになる可能性があります=!X!=0
が!X!
、これはの再計算を強制するため、望ましくありません(「ポイント2」)。を使用してセル自体を利用することをお=B1=A1
勧めします(セルがB1であると想定)!X! = 0
。
セルの内容を実際ににする必要がある場合でも ""
、通常、このアプローチを使用できるように、ワークシートに小さな変更を加えることができます。その場合は、状況を説明するコメントを残してください。
ヘルプ列を追加する可能性はありません。とにかくありがとう。
ヘルパー列を追加できない場合は、ワークシート全体を追加してみませんか?これにはいくつかの利点があります。
=IF(X<>0,X+A1,"")
D5
。helper!D5
メインシートのようにセルをアドレス指定します。私が見ることができる欠点は次のとおりです。
sheetname!D5
にではなく、メインシートの名前のないセルを参照する必要がありますD5
。長所と短所を比較検討すると、多くのユースケースでこれは良い解決策だと思います。今は考えられませんが、最適とは言えない状況もあります。
まだ提案されていないオプションは、ユーザー定義関数を作成することです。メニューバーの[開発]タブをオンにして(グーグルで)モジュールを作成する必要があります。
public function udf_myCalc(ValueToAdd as double)
dim myvar as double
dim udf_myCalc as double
myvar = .. put the logic of !X! in here
if myvar<>0 then
udf_myCalc = myvar + ValueToAdd
else
udf_myCalc = ValueToAdd
end if
end function
次に、数式バーで次のようにします
=udf_myCalc(A1)
注:これは.xlsx(マクロ付き)ファイルになり、悪意のある目的でマクロが使用され、一部の電子メールフィルターによってそれらがブロックされるため、企業ネットワークで追加の権限が必要になる場合があります。関数は文書化されていないので、関数が何をしているかについてのメモを提供する必要があります。組み込み関数ではないことが明確になるように、すべての関数をudf_xxxxxと呼ぶと便利です。
UDFを備えた他のGOTCHAもあります。いくつかの良いヒントについては、このリンクを参照して くださいhttp://www.decisionmodels.com/calcsecretsj.htm
To reduce the process time
、結果をどこかに保存する必要があります。そうでない場合は、条件が一致したときにExcelで値を再計算する必要があります。除算も非常にコストのかかる操作です