Excelで複数のフラグや権限を1つの数値にまとめたいけれど、やり方がわからない…そんな経験はありませんか?
ビット演算は「なんだか難しそう」と感じる方も多いですよね。でも、権限の付与やフラグの追加など、BITOR関数が活躍する場面は意外とあるんです。
この記事では、ExcelのBITOR関数の使い方を基本から丁寧に解説します。構文や引数はもちろん、2進数での計算イメージや実務での活用例まで紹介しているので、ぜひ最後まで読んでみてください。
ExcelのBITOR関数とは?
BITOR関数(ビットオア関数)は、2つの数値のビット単位のOR演算(論理和)を行う関数です。
「ビット単位のOR演算」とは、2つの数値を2進数に変換して、同じ位置のビットのどちらか一方でも1であれば1を返す計算のことです。
たとえば、5と12のビットORを求める場合を見てみましょう。
- 5 を2進数にすると → 0101
- 12 を2進数にすると → 1100
- OR演算の結果 → 1101(= 10進数の13)
どちらかのビットが1になっている桁はすべて残る、というイメージですね。
BITOR関数はExcel 2013以降で利用できます。お使いのバージョンが対応しているか確認しておきましょう。
BITOR関数の構文と引数
基本構文
=BITOR(数値1, 数値2)
引数は2つとも必須です。省略するとエラーになります。
引数の詳細
| 引数 | 必須/任意 | 説明 |
|---|---|---|
| 数値1 | 必須 | OR演算を行う1つ目の数値(0以上の整数) |
| 数値2 | 必須 | OR演算を行う2つ目の数値(0以上の整数) |
どちらの引数にも、0以上かつ(2^48)-1以下の整数を指定します。この範囲を超えると#NUM!エラーになるので注意してくださいね。
小数を指定した場合は、小数部分が切り捨てられて整数として処理されます。たとえば =BITOR(5.8, 12.3) は =BITOR(5, 12) と同じ結果になりますよ。
ビットOR演算の仕組みを理解しよう
BITOR関数をしっかり使いこなすには、OR演算の仕組みを理解しておくのがポイントです。
AND演算との違い
BITAND関数(ビットAND演算)は「両方が1のビットだけ残す」関数でした。一方、BITOR関数は「どちらか一方でも1なら残す」関数です。
この違いを表にまとめると、次のようになります。
| ビットA | ビットB | AND(BITAND) | OR(BITOR) |
|---|---|---|---|
| 0 | 0 | 0 | 0 |
| 0 | 1 | 0 | 1 |
| 1 | 0 | 0 | 1 |
| 1 | 1 | 1 | 1 |
ANDは「両方1のときだけ1」、ORは「どちらか1なら1」です。この違いさえ押さえておけば大丈夫ですよ。
2進数での計算を追いかけてみよう
もう1つ例を見てみましょう。9と6のビットORを計算します。
- 9 = 1001(2進数)
- 6 = 0110(2進数)
- OR = 1111(2進数)= 15(10進数)
各桁を1つずつ見ていくと、すべての桁でどちらかが1になっているため、結果はすべてのビットが1の「1111」です。
Excelで確認するなら、次のように入力します。
=BITOR(9, 6)
結果は 15 になります。
BITOR関数の基本的な使い方
実際にBITOR関数を使ってみましょう。
数値を直接指定する方法
セルに次のように入力します。
=BITOR(5, 12)
結果は 13 になります。
計算の流れを2進数で確認すると、次のとおりです。
- 5 = 0101(2進数)
- 12 = 1100(2進数)
- OR = 1101(2進数)= 13(10進数)
セル参照で指定する方法
A1セルに「13」、B1セルに「11」が入っている場合は、次のように書きます。
=BITOR(A1, B1)
結果は 15 です。
- 13 = 1101(2進数)
- 11 = 1011(2進数)
- OR = 1111(2進数)= 15(10進数)
DEC2BIN関数(10進数を2進数に変換する関数)を使うと、途中の2進数変換も確認できますよ。
=DEC2BIN(A1) → "1101"
=DEC2BIN(B1) → "1011"
BITOR関数の実務活用例
「ビット演算って実務で使うの?」と思った方もいるかもしれません。BITOR関数は、フラグの追加や権限の付与で活躍するんです。
活用例1: 権限の付与
システムの権限をビットフラグで管理しているケースを考えてみましょう。
| ビット位置 | 権限 | 値 |
|---|---|---|
| 1桁目 | 閲覧 | 1 |
| 2桁目 | 編集 | 2 |
| 3桁目 | 削除 | 4 |
| 4桁目 | 管理 | 8 |
現在「閲覧」権限(= 1)だけを持つユーザーに「編集」権限(= 2)を追加するには、次の数式を使います。
=BITOR(1, 2)
結果は 3 です。2進数で見ると「01」OR「10」=「11」なので、閲覧と編集の両方のビットが立った状態になりますね。
IF関数と組み合わせて、条件に応じて権限を付与する数式も作れます。
=IF(C2="承認済", BITOR(A2, 2), A2)
C2セルが「承認済」なら編集権限を追加し、そうでなければ現在の権限をそのまま返します。
活用例2: 複数フラグの結合
商品の属性をビットフラグで管理している場合にも使えます。
| ビット | 属性 | 値 |
|---|---|---|
| 1桁目 | セール対象 | 1 |
| 2桁目 | 送料無料 | 2 |
| 3桁目 | 新商品 | 4 |
「セール対象」(= 1)と「送料無料」(= 2)を同時に設定するには、次のように書きます。
=BITOR(1, 2)
結果は 3 です。これで両方の属性フラグが立った状態になります。
3つ以上のフラグを結合したい場合は、BITOR関数をネスト(入れ子)にします。
=BITOR(BITOR(1, 2), 4)
結果は 7 で、3つの属性すべてが有効になります。
他のビット演算関数との使い分け
Excelにはビット演算関数がいくつか用意されています。場面に応じて使い分けましょう。
| 関数 | 演算 | 説明 | 使いどころ |
|---|---|---|---|
| BITAND | AND(論理積) | 両方1のビットだけ残す | 権限チェック・フラグ抽出 |
| BITOR | OR(論理和) | どちらか1のビットを残す | 権限の付与・フラグ追加 |
| BITXOR | XOR(排他的論理和) | 異なるビットだけ残す | フラグの切り替え(トグル) |
| BITLSHIFT | 左シフト | ビットを左にずらす | 値の2倍・4倍計算 |
| BITRSHIFT | 右シフト | ビットを右にずらす | 値の半分計算 |
BITOR関数は「フラグを追加する・権限を付与する」ときに使います。逆に、特定のフラグが立っているかチェックしたいときはBITAND関数が便利です。フラグのON/OFFを切り替えたい場合はBITXOR関数を使いましょう。
BITOR関数のエラーと対処法
BITOR関数で発生しやすいエラーをまとめました。
#NUM! エラー
次のいずれかに該当すると#NUM!エラーになります。
- 引数に負の数を指定した場合
- 引数に(2^48)-1(= 281,474,976,710,655)を超える値を指定した場合
対処法: 引数には0以上の整数を指定してください。小数が入る可能性がある場合は、INT関数で整数に変換しましょう。
=BITOR(INT(A1), INT(B1))
#VALUE! エラー
引数に文字列を指定すると#VALUE!エラーになります。
対処法: セル参照の場合は、参照先が数値であることを確認しましょう。VALUE関数で数値に変換する方法もあります。
=BITOR(VALUE(A1), VALUE(B1))
まとめ
この記事では、ExcelのBITOR関数の使い方を解説しました。
- BITOR関数は2つの数値のビット単位のOR演算(論理和)を行う
- 引数は2つとも必須で、0以上の整数を指定する
- 「どちらかのビットが1なら1を返す」のがOR演算のポイント
- 権限の付与やフラグの追加など、実務でも活用できる
- BITAND関数やBITXOR関数など、他のビット演算関数と組み合わせるとさらに便利
ビット演算は一見むずかしそうに見えますが、BITOR関数を使えばExcelで手軽に計算できます。まずは基本の使い方から試してみてくださいね。
