ExcelのBITAND関数の使い方|ビットAND演算の基本と実務活用

スポンサーリンク

Excelで2つの数値をビット単位で比較したいけれど、やり方がわからない…そんな経験はありませんか?

ビット演算は「なんだか難しそう」と敬遠されがちですよね。でも、アクセス権のチェックやフラグ管理、複数条件の一括判定など、実務で役立つ場面は意外と多いんです。

この記事では、ExcelのBITAND関数の使い方を基本から丁寧に解説します。構文や引数はもちろん、実務での具体的な活用例、よくあるエラーの対処法、関連関数との使い分けまで網羅しているので、最後まで読んでみてくださいね。

ExcelのBITAND関数とは?

BITAND関数(ビットアンド関数)は、Excelで2つの数値のビット単位のAND演算(論理積)を行うための関数です。

「ビット単位のAND演算」とは、2つの数値を2進数に変換して比較する計算です。同じ位置のビットがどちらも1のときだけ1を返し、それ以外は0になります。

たとえば、5と12のビットANDを求める場合を見てみましょう。

  • 5 を2進数にすると → 0101
  • 12 を2進数にすると → 1100
  • AND演算の結果 → 0100(= 10進数の4)

両方のビットが1になっている桁だけが残る、というイメージですね。

BITAND関数はExcel 2013以降で利用できます。お使いのバージョンが対応しているか、確認しておきましょう。

BITAND関数の構文と引数

基本構文

=BITAND(数値1, 数値2)

引数は2つとも必須です。省略するとエラーになります。

引数の詳細

引数必須/任意説明
数値1必須AND演算を行う1つ目の数値(0以上の整数)
数値2必須AND演算を行う2つ目の数値(0以上の整数)

どちらの引数にも、0以上かつ(2^48)-1以下の整数を指定します。この範囲を超えると#NUM!エラーになるので注意してくださいね。

48ビットというと大きく感じますが、10進数では281,474,976,710,655(約281兆)まで扱えるという意味です。実務でフラグ管理に使う範囲なら、まず気にしなくて大丈夫ですよ。

BITAND関数の基本的な使い方

まずはシンプルな使い方から見ていきましょう。

数値を直接指定する方法

セルに次のように入力します。

=BITAND(5, 12)

結果は 4 になります。

この計算を2進数で確認すると、次のとおりです。

  • 5 = 0101(2進数)
  • 12 = 1100(2進数)
  • AND = 0100(2進数)= 4(10進数)

セル参照で指定する方法

A1セルに「13」、B1セルに「11」が入っている場合は、次のように書きます。

=BITAND(A1, B1)

結果は 9 です。

  • 13 = 1101(2進数)
  • 11 = 1011(2進数)
  • AND = 1001(2進数)= 9(10進数)

DEC2BIN関数(10進数を2進数に変換する関数)を使うと、途中の2進数変換も確認できますよ。

=DEC2BIN(A1)  → "1101"
=DEC2BIN(B1)  → "1011"

慣れないうちは、計算用シートにDEC2BIN関数で2進数表記の列を並べておくと、結果を目で追いやすくなります。

BITAND関数の実務活用例

「ビット演算って実務で使うの?」と思った方もいるかもしれません。実は、フラグ管理やアクセス権チェック、複数条件の一括判定などで活躍するんです。ここでは具体的な4つの例を見ていきましょう。

活用例1: アクセス権限のチェック

たとえば、システムの権限をビットフラグで管理しているケースを考えてみましょう。

ビット位置権限
1桁目閲覧1
2桁目編集2
3桁目削除4
4桁目管理8

ユーザーの権限値が「7」の場合、2進数では「0111」です。つまり閲覧・編集・削除の権限を持っています。

このユーザーが「編集権限(= 2)」を持っているかを調べるには、次の数式を使います。

=BITAND(7, 2)

結果は 2 です。0より大きいので、編集権限があると判定できますね。

IF関数と組み合わせると、もっと分かりやすくなります。

=IF(BITAND(A2, 2) > 0, "編集可", "編集不可")

A2セルにユーザーの権限値を入れておけば、編集権限の有無を自動判定できますよ。

複数のユーザーの権限を一覧でチェックしたい場合は、こんな表を組み立てるのがおすすめです。

ユーザー権限値閲覧編集削除管理
山田15
佐藤3
鈴木5

各セルには =IF(BITAND($B2,1)>0,"○","-") のように書きます。数値部分はビット位置に合わせて 1, 2, 4, 8 と切り替えてくださいね。アカウント管理表をExcelで運用しているチームでは、このパターンがけっこう重宝しますよ。

活用例2: 複数フラグの一括チェック

商品の属性をビットフラグで管理している場合にも使えます。

ビット属性
1桁目セール対象1
2桁目送料無料2
3桁目新商品4
4桁目限定商品8

商品コード「5」(= 0101)は「セール対象」かつ「新商品」です。

「セール対象かつ送料無料」(= 3)の商品を抽出するには、次のように書きます。

=IF(BITAND(A2, 3) = 3, "対象", "対象外")

BITAND関数の結果がチェック値と一致すれば、すべてのフラグが立っていると判定できます。

ポイントは「> 0」と「= チェック値」の使い分けです。

  • BITAND(A2, 3) > 0 → セール対象 または 送料無料のどちらかが立っていればTRUE
  • BITAND(A2, 3) = 3 → セール対象 かつ 送料無料の両方が立っていればTRUE

「いずれか1つでも該当」と「すべて該当」では条件が大きく変わるので、目的に合わせて選んでくださいね。

活用例3: データフィルタリングと件数集計

BITAND関数はSUMPRODUCT関数やSUM関数と組み合わせると、条件に合うデータの件数集計にも使えます。

たとえばA2:A100に商品の属性値が入っているとしましょう。「セール対象かつ新商品」(= 5)の商品件数を数える場合は、次のように書きます。

=SUMPRODUCT((BITAND(A2:A100, 5) = 5) * 1)

スピル対応のExcel(Microsoft 365、Excel 2021以降)なら、BITAND関数も配列に対応していて上の数式が自然に動きます。古いバージョンを使っている場合は、Ctrl+Shift+Enterで配列数式として確定してくださいね。

「特定の権限を持つユーザー数」「フラグが立っている案件件数」を出したい場面でも、同じ考え方で集計できますよ。

活用例4: 偶数・奇数の判定

ちょっとした応用ですが、BITAND関数を使うと数値が偶数か奇数かを判定できます。最下位ビット(1の位)が1なら奇数、0なら偶数というルールを使うわけですね。

=IF(BITAND(A2, 1) = 1, "奇数", "偶数")

ISODD関数(奇数判定)やMOD関数でも同じことはできます。それでも、BITAND関数の発想に慣れる練習として知っておくと便利ですよ。「ビットの1の位だけ取り出す」イメージをつかむのに役立ちます。

BITAND関数のよくあるエラーと対処法

BITAND関数で発生しやすいエラーをまとめました。実務で困ったときの早見表として活用してください。

#NUM! エラー

次のいずれかに該当すると#NUM!エラーになります。

  • 引数に負の数を指定した場合
  • 引数に(2^48)-1(= 281,474,976,710,655)を超える値を指定した場合
  • 引数に小数を指定した場合

対処法: 引数には0以上の整数を指定してください。小数が入る可能性がある場合は、INT関数(小数点以下を切り捨てる関数)で整数に変換しましょう。

=BITAND(INT(A1), INT(B1))

外部システムからCSVで取り込んだデータでは、見た目は整数でも内部で小数になっているケースがあります。エラーが出たらまずINT関数でくるんで試してみてくださいね。

#VALUE! エラー

引数に文字列を指定すると#VALUE!エラーになります。空白セル参照や、見出し行を一緒に範囲指定してしまった場合に起きやすいエラーです。

対処法: セル参照の場合は、参照先が数値であることを確認しましょう。VALUE関数(文字列を数値に変換する関数)で数値に変換する方法もあります。

=BITAND(VALUE(A1), VALUE(B1))

数値のはずなのに#VALUE!が出る場合は、セル左上の緑の三角マークもチェックしてみてください。これは「文字列として保存された数値」の警告マークです。

#NAME? エラー

関数名のスペルミスや、Excel 2010以前のバージョンで使ったときに#NAME?エラーになります。

対処法: 関数名が「BITAND」と正しく入力されているか確認してください。古いバージョンで使う必要がある場合は、AND関数(論理AND)と混同していないかも見直しましょう。BITAND関数はExcel 2013以降の機能です。

結果がうまく合わないとき

エラーは出ないけれど期待した結果にならない、という場合は次の3点をチェックしてみてください。

  1. 引数の値を本当に2進数でイメージできているか(DEC2BIN関数で確認すると確実)
  2. 比較対象の値が「すべて立っているか(= チェック値)」と「いずれか1つ以上立っているか(> 0)」のどちらを判定したいのか
  3. ビット位置と桁の対応(1桁目=1、2桁目=2、3桁目=4、4桁目=8…)が合っているか

特に3つ目は、フラグ管理の表を作るときに混乱しがちなポイントです。「ビット位置 → 値」の早見表を別シートに用意しておくと安心ですよ。

他のビット演算関数との使い分け

Excelにはビット演算関数がいくつか用意されています。場面に応じて使い分けましょう。

関数演算説明使いどころ
BITANDAND(論理積)両方1のビットだけ残す権限チェック・フラグ抽出
BITOROR(論理和)どちらか1のビットを残す権限の付与・フラグ追加
BITXORXOR(排他的論理和)異なるビットだけ残すフラグの切り替え(トグル)
BITLSHIFT左シフトビットを左にずらす値の2倍・4倍計算
BITRSHIFT右シフトビットを右にずらす値の半分計算

BITAND と BITOR の使い分け

BITANDは「両方立っているか確認する」、BITORは「どちらかを立てる(追加する)」のが基本の考え方です。

たとえば、ユーザー権限値が「3(閲覧+編集)」のときに「削除権限(=4)」を追加したいなら、BITORで合成します。

=BITOR(3, 4)  → 7(閲覧+編集+削除)

そのうえで「削除権限を持っているか」を確認するときにBITANDが活躍する、という流れですね。「足し算がBITOR、確認がBITAND」と覚えておくと混乱しません。

BITAND と BITXOR の使い分け

BITXORは「同じ位置のビットが違っていれば1、同じなら0」を返す関数です。フラグのON/OFFを切り替える(トグルする)ときに便利です。

=BITXOR(7, 2)  → 5(編集権限のビットだけ反転)

「権限を一時的に剥奪する」「設定を切り替える」用途ならBITXOR、「権限が立っているか確認する」用途ならBITAND、と使い分けましょう。

BITAND と AND関数の違い

名前が似ている AND関数 と混同しないように注意してください。AND関数は引数の論理値(TRUE/FALSE)がすべてTRUEならTRUEを返すもので、ビット単位の演算は行いません。

  • =AND(TRUE, FALSE) → FALSE(論理値の判定)
  • =BITAND(5, 12) → 4(ビットごとの計算)

「ビット単位で扱いたいときがBITAND、条件式の組み合わせを判定したいときがAND」と覚えておきましょう。

まとめ

この記事では、ExcelのBITAND関数の使い方を解説しました。

  • BITAND関数は2つの数値のビット単位のAND演算(論理積)を行う関数
  • 引数は2つとも必須で、0以上(2^48)-1以下の整数を指定する
  • アクセス権チェック・フラグ管理・データ集計・偶数奇数判定など、実務でも幅広く活用できる
  • #NUM!や#VALUE!エラーが出たら、INT関数やVALUE関数で型を整えるのがコツ
  • BITOR(フラグ追加)やBITXOR(フラグ切替)と組み合わせると、フラグ管理が一気に強力になる

ビット演算は一見むずかしそうに見えますが、BITAND関数を使えばExcelで手軽に計算できます。まずは権限チェックや偶数・奇数判定など、身近な使い方から試してみてくださいね。

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