いきなり答える備忘録

Google Workspace(旧G Suite)・Microsoft 365・LibreOfficeなどに関するメモ

(Gスプレッドシート)SIGN関数で数値の符号を取得する

 Googleスプレッドシートで、数値の符号を調べるのに用いられるSIGN関数のはたらきと使用例です。

  • 「=SIGN(数値)」とすることで、数値がプラスなら1、0なら0、マイナスなら-1が得られます。
  • 増減比較を単純化したり、絶対値を無視したい場合などに利用できます。

手順

 B3:B8の範囲に対象となる数値が記録されています。
 これに対し、C3セルに「=SIGN(B3)」と入力し、下方にコピーすることで各数値の符号を得ています。
 符号は+とか-といった記号ではなく、数値がプラスなら1、0なら0、マイナスなら-1が得られます。

 C3セル

=SIGN(B3)

 引数は1つだけで、非常に簡単です。


 1つのメリットは比較を単純化できることです。
 次の画像の例ではSIGN関数を使って数値の増減を判定し、文字列として出力しています。

 E3セル

=SWITCH(SIGN(D3-C3),1,"増加",0,"増減なし",-1,"減少")

 IFSでやってもほとんど手間は変わりませんし他にもいろいろなやり方がありますが、数値の比較結果を1つの値にまとめた例です。


 次は少し凝った例です。
 数値を8桁の2進数に変換して、各ビットを分割して各セルに表示しています。

 D3セル

=ARRAYFORMULA(SIGN(BITAND(B3,BITLSHIFT(1,SEQUENCE(1,8,7,-1)))))

 DEC2BINやBASEで2進数に変換し、文字列として分割するという方法もありますが、ここでは1に対するBITLSHIFTとBITANDを使い、終始数値として扱い計算、分割しています。
 ここではSIGN関数により、BITANDによる0以外の出力をすべて1に置き換えています。SIGNがないと右からn桁目が0または2^(n-1)になります。