【Excel】SIGN関数で数値の符号を調べます

【Excel】SIGN 関数

 sign とは「符号」という意味です。Excel の SIGN 関数 は数値がプラスかマイナスか、あるいは符号をもたないのか (0 であるのか) を判定します。引数には数値を使って

=SIGN(数値)

と書きます。数値が正のときは「 1 」、ゼロのときは「 0 」、負のときは「-1 」を返します。たとえば

=SIGN(-5)

と入力すると「-1 」が返ってきます。こんな関数、いったい何に使うのかと疑問に思いますけど、まあそれなりに色々と使い道はあります。実は Excel には偶数に切り上げる EVEN という関数がありますが、偶数に切り下げる関数というものは存在していません。ここでは FLOOR 関数 と組み合わせて数値を偶数に切り捨てる技を紹介します。

=FLOOR(数値,2)

と入力すると数値を一番近い偶数に切り下げます。たとえば

=FLOOR(5,2)

と入力すると 5 に近い「 4 」が返ります。でも数値が負の場合はそのまま使えません。

=FLOOR(-5,2)

と入れるとエラーになってしまいます。FLOOR関数は2つの引数の符号が一致している必要があるからです。なので負の値を偶数に切り下げるには

=FLOOR(-5,-2)

と入力する必要があります。すると「 – 2 」が返ります。ちなみにここでは負について、よりい小さな値(今の例では「 – 4 」)ではなく、原点に近い方の数値にすることを切り下げと定義してあります。
 そして数値の正負に関わらず、一喝して処理するときに SIGN関数 と組合わせることになります。セル A1 に入っている(正負が不明の)数値を偶数切り下げするには、少し長いですけど

=IF(SIGN(A1)>=0,FLOOR(A1,2),FLOOR(A1,-2))

というように IF で場合分けします。

SIGN(A1)>=0

は「もし A1 の数値が 0 以上であれば」という記述で、この条件を満たす場合は次の引数にあるように

FLOOR(A1,2)

という処理を行います。条件をみたさない場合は3つめの引数にある

FLOOR(A1,-2)

として負数に対する切り下げ処理を行います。

Excel VBA
Excel VBA 表計算とプログラミング学習サイト

コメント

タイトルとURLをコピーしました