%20%E9%96%A2%E6%95%B0%E3%81%AE%E5%BC%95%E6%95%B0%E3%81%A8%E3%81%97%E3%81%A6%E4%BD%BF%E7%94%A8%E3%81%99%E3%82%8B%E3%81%93%E3%81%A8%E3%81%AF%E5%8F%AF%E8%83%BD%E3%81%A7%E3%81%99%E3%81%8B%3F.png)
簡単に説明します少し私の質問の核心にたどり着けることを願っています。
セルに膨大な数式が入ったスプレッドシートがあります。(繰り返しますが、質問が長すぎて誰も読めなくなるのを避けるために簡略化しています)。
最後に、新しい変数が導入されました。この新しい変数がその数式の値より小さい場合、数式は代わりにこの新しい変数を返す必要があります。
これは MIN() 関数の完璧な使用法ですが、MIN() 関数で複雑な数式 (多くの IF ステートメントを含む) を引数の 1 つとして使用し、データ範囲を別の引数として使用するのは困難です。
たとえば、これは機能しませんでした:
MIN(新しいデータ範囲、IF(x=y/pi...))
はNEW_DATA_RANGE
新しい変数を含むデータ範囲です。
リテラル定数に置き換えればNEW_DATA_RANGE
、問題なく動作します。同様に、数式をリテラル定数に置き換えても問題なく動作します。しかし、データ範囲内の値のMIN()を取得しようとすると、そして複雑な数式の場合、LibreOffice は常にゼロ (0) を返します。
これはおそらく LibreOffice Calc のバグでしょうか、それとも MIN() 関数の引数としてデータ範囲と複雑な数式を使用できない何らかの理由があるのでしょうか?
答え1
ドキュメントではこれについてあまり詳しく述べられていませんが、MIN() はセルの範囲または値のリストをパラメータとして想定しています。関数が値を返すため、MIN() の他のパラメータも値である必要があります。したがって、値を返す別の関数に NEW_DATA_RANGE をパラメータとして渡す必要があります。例:
=MIN(MIN(NEW_DATA_RANGE),IF(x=y/pi...))
NEW_DATA_RANGEに空のセルが含まれる場合
=IF(ISEMPTY(A),IF(x=y/pi...),MIN(MIN(A),IF(x=y/pi...)))
IF(...) をユーザー定義関数に置き換えます。