『Excel VBA 表計算とプログラミング学習サイト』では、アフィリエイトプログラムを利用して商品を紹介しています。

【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)

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

コメント

  1. あとりえこばと より:

    【AI解説】ExcelのSIGN関数は、数値の正負を調べる関数です。引数に数値を指定して、その数値が正なら1、0なら0、負なら-1を返します。SIGN関数の応用例は、以下のとおりです。
     
    ・数値の正負を判定する:SIGN関数は、数値の正負を判定するのに最適です。例えば、売上高が黒字か赤字かを判定する場合は、以下のような数式を使用できます。
    =IF(SIGN(売上高) = 1, “黒字”, “赤字”)
    この数式は、売上高が正なら「黒字」、負なら「赤字」を返します。

    ・数値の符号を調整する:SIGN関数は、数値の符号を調整するにも使用できます。例えば、時差がマイナスの場合、TIME関数に直接引数を指定するとエラーが発生します。そこで、SIGN関数とABS関数を組み合わせて、以下のような数式を使用することで、時差がマイナスの場合でもエラーを回避できます。
    =TIME(1,0,SIGN(時差)*ABS(時差))
    この数式は、時差が正ならそのままTIME関数に引数を指定しますが、時差が負なら-1を掛けて符号を調整します。

    ・数値の増減を判定する:SIGN関数は、数値の増減を判定するのに使用することもできます。例えば、前月の売上高と今月の売上高を比較して、増加したか減少したかを判定する場合は、以下のような数式を使用できます。
    =IF(SIGN(今月の売上高 – 前月の売上高) = 1, “増加”, “減少”)
    この数式は、今月の売上高が前月の売上高より大きいなら「増加」、小さいなら「減少」を返します。

    このように、SIGN関数は数値の正負を調べるだけでなく、さまざまな応用が可能です。以下に、SIGN関数の応用例をいくつかご紹介します。

    ・傾向の判定:株価や為替などのデータの傾向を判定する場合、SIGN関数を使用して、前期と今期の値を比較して増加したか減少したかを判定できます。

    ・異常値の検出:データの中に異常値が含まれている場合、SIGN関数を使用して、平均値や中央値などの基準値と比較して、異常値を判定できます。
     
    ・振り幅の判定:データの振り幅を判定する場合、SIGN関数を使用して、最大値と最小値の差を計算できます。