「8進数のデータを10進数に変換したいけど、手計算は面倒…」
Excelで8進数を扱う場面は意外とあります。Unixのファイルパーミッション(755や644など)の集計や、IoTセンサーデータの変換が代表例です。
でも8進数から10進数への手計算は、桁ごとに8のべき乗をかけて合計する作業が必要です。桁数が増えるほどミスしやすいですよね。
そこで便利なのがOCT2DEC関数です。Excelで8進数を入力するだけで、10進数に一発変換できます。この記事では、OCT2DEC関数の使い方からエラー対策、関連関数との使い分けまで解説します。
OCT2DEC関数とは?読み方と基本概要
OCT2DEC関数は、8進数を10進数に変換するExcelの関数です。
8進数は0から7の数字だけで数を表す方法です。10進数は普段の生活で使うおなじみの表記ですね。OCT2DEC関数を使えば、この変換を自動で行えます。
「OCT→DEC」命名規則と読み方
読み方は「オクタル・ツー・デシマル」です。
- OCT = Octal(オクタル、8進数)
- 2 = to(〜へ)
- DEC = Decimal(デシマル、10進数)
「8進数から10進数へ」という意味です。Excelの進数変換関数は、すべてこの命名規則に従います。たとえばBIN2DEC関数なら「2進数から10進数へ」です。関数名がそのまま機能を表しているので覚えやすいですね。
使う場面:Unixパーミッション・IoTデータ・進数検算
OCT2DEC関数は、次のような場面で活躍します。
- Unixファイルパーミッションの数値処理(755や644を集計する)
- IoTセンサーや通信機器からの8進数データを変換する
- 進数変換の学習や検算に使う
特にファイルパーミッションの数値処理は実務でよくある用途です。サーバー管理の一覧表を作るときに重宝します。
対応バージョン一覧
| バージョン | 対応状況 |
|---|---|
| Excel 2007以降 | 標準搭載(そのまま使える) |
| Excel 2003以前 | 分析ツールアドインの有効化が必要 |
| Microsoft 365 | 対応(Windows / Mac / Web) |
現在使われているほとんどのExcelで、追加設定なしで利用できます。
OCT2DEC関数の構文と引数
構文は1引数のみ——桁数引数は存在しない
基本構文は次のとおりです。
=OCT2DEC(数値)
引数は「数値」の1つだけです。
OCT2BIN関数やOCT2HEX関数には「桁数」引数がありますが、OCT2DEC関数にはありません。変換先が10進数の場合、結果は一意に決まるため桁数の指定が不要だからです。
| 引数 | 必須/任意 | 説明 |
|---|---|---|
| 数値 | 必須 | 10進数に変換したい8進数を指定する |
引数「数値」の制約ルール(0〜7・最大10文字・範囲早見表)
引数「数値」には次のルールがあります。
- 使える文字は0から7のみ(8・9やアルファベットは不可)
- 最大10文字まで指定できる(30ビット分)
- 直接入力でもセル参照でも指定できる
入力できる値の範囲を早見表にまとめます。
| 区分 | 8進数の範囲 | 10進数での値 |
|---|---|---|
| 正の数 | 0 〜 3777777777 | 0 〜 536,870,911 |
| 負の数 | 4000000000 〜 7777777777 | -536,870,912 〜 -1 |
正の最大値は約5.4億、負の最小値は約-5.4億です。実務で扱う値はほとんどこの範囲に収まります。
基本の使い方と実例
直接入力・セル参照で変換する
まずはセルに直接値を入力する方法です。
=OCT2DEC(54)
結果は「44」です。8進数の54は10進数の44に対応します。
変換の仕組みを確認しましょう。各桁に8のべき乗をかけて合計します。
| 桁 | 数字 | 計算 | 結果 |
|---|---|---|---|
| 8の位(8の1乗) | 5 | 5 × 8 | 40 |
| 1の位(8の0乗) | 4 | 4 × 1 | 4 |
| 合計 | 44 |
セル参照でも同様に使えます。A1に「175」が入っているとします。
=OCT2DEC(A1)
結果は「125」です。1×64 + 7×8 + 5×1 = 125 で検算もOKですね。参照先の値を変えれば結果も自動で更新されます。
よく使う変換値早見表
実務でよく登場する値をまとめておきます。
| 入力(8進数) | 出力(10進数) | 用途・メモ |
|---|---|---|
| 7 | 7 | 1桁の最大値 |
| 10 | 8 | 2桁の最小値(8進数の繰り上がり) |
| 100 | 64 | 3桁の最小値 |
| 644 | 420 | Unixパーミッション(rw-r–r–) |
| 755 | 493 | Unixパーミッション(rwxr-xr-x) |
| 777 | 511 | Unixパーミッション(rwxrwxrwx) |
755や644はサーバー管理で頻出する値です。OCT2DEC関数で10進数に変換しておけば、SUM関数などで集計できますよ。
負の8進数(2の補数形式)を変換する
OCT2DEC関数は「2の補数」(コンピュータで負の数を表す仕組み)にも対応しています。
判定ルールはシンプルです。8進数が10桁のとき、最上位桁が4以上なら負の数になります。
=OCT2DEC(7777777777)
結果は「-1」です。最上位桁が「7」なので負の値です。
=OCT2DEC(4000000000)
結果は「-536,870,912」です。これが負の最小値です。
最上位桁ごとの正負判定を表にまとめます。
| 最上位桁 | 正負 | 8進数の例 | 10進数の結果 |
|---|---|---|---|
| 0〜3 | 正 | 3777777777 | 536,870,911 |
| 4〜7 | 負 | 4000000000 | -536,870,912 |
| 7 | 負 | 7777777777 | -1 |
NOTE
「-54」のようにマイナス記号を付ける書き方はできません。負の数は2の補数形式で指定します。
実務活用:Unixファイルパーミッション集計ワークフロー
OCT2DEC関数の実務活用として、Unixファイルパーミッションの集計シートを作る方法を紹介します。
主要パーミッション値の10進数早見表
Unixでは各桁の数字が権限を表します。各桁は「読み取り(4)+書き込み(2)+実行(1)」の合計です。
| 8進数 | パーミッション表記 | 10進数(OCT2DEC) | 用途 |
|---|---|---|---|
| 755 | rwxr-xr-x | 493 | 実行ファイル・ディレクトリの標準 |
| 644 | rw-r–r– | 420 | 一般ファイルの標準 |
| 777 | rwxrwxrwx | 511 | 全権限(テスト用) |
| 600 | rw——- | 384 | 秘密鍵ファイルなど |
| 700 | rwx—— | 448 | 個人ディレクトリ |
たとえば755の意味は次のとおりです。7(所有者: rwx)、5(グループ: r-x)、5(その他: r-x)。
IFERRORと組み合わせた一括変換シートの作り方
サーバーから取得したパーミッション一覧を、まとめて変換するシートを作りましょう。A列に8進数のパーミッション値が並んでいるとします。
B列に次の数式を入力して、下方向にコピーします。
=IFERROR(OCT2DEC(A1), "入力エラー")
IFERROR関数(エラー時に代わりの値を返す関数)と組み合わせれば、不正な値が混ざってもシートが壊れません。「入力エラー」と表示されたセルだけ確認すれば済みますよ。
さらに、C列で変換結果をチェックする数式を追加すると便利です。
=IF(ISNUMBER(B1), "変換OK", "要確認")
これで、変換結果の一覧とエラー箇所が一目でわかるシートが完成します。
エラーの原因と対処法(#NUM!・#VALUE!)
OCT2DEC関数で発生するエラーは、#NUM!と#VALUE!の2種類です。それぞれの原因と対処法を解説します。
#NUM!エラーの3パターン
#NUM!エラーが最も頻発します。原因は3つに分類できます。
パターン1:8・9やアルファベットを含む
最も多いパターンです。8進数では0〜7の数字しか使えません。
=OCT2DEC(89)
この数式は#NUM!エラーになります。「8」も「9」も8進数の有効な文字ではないためです。
対処法: 入力値に0〜7以外の文字がないか確認しましょう。
パターン2:10文字超の入力
入力は最大10文字までという制限があります。
=OCT2DEC(12345678901)
11文字なので#NUM!エラーです。
対処法: LEN関数(文字数を返す関数)で事前チェックできます。=LEN(A1)<=10 がTRUEなら入力可能です。
パターン3:空白・テキスト値の混入
セル参照先が空白や文字列の場合もエラーになります。
=OCT2DEC("ABC")
数値として認識できないため、エラーが発生します。
対処法: ISNUMBER関数やISBLANK関数で事前に値を検証しましょう。大量データの一括変換では、前述のIFERROR関数との組み合わせが効果的です。
#VALUE!エラーのパターン
#VALUE!エラーは、引数のデータ型が不正な場合に発生します。
=OCT2DEC(TRUE)
論理値(TRUE/FALSE)を渡すと#VALUE!エラーになります。数値や文字列として認識できない型が原因です。
対処法: セル参照先のデータ型を確認しましょう。TYPE関数(セルのデータ型を数値で返す関数)を使えば、=TYPE(A1) が「1」(数値)か「2」(文字列)であることを事前にチェックできますよ。
エラー早見表
| エラー | 原因 | 例 | 対処法 |
|---|---|---|---|
| #NUM! | 8・9やアルファベットを含む | =OCT2DEC(89) | 0〜7のみか確認 |
| #NUM! | 10文字超の入力 | =OCT2DEC(12345678901) | LEN関数で文字数チェック |
| #NUM! | 空白・無効な値 | =OCT2DEC("") | ISBLANK関数で事前検証 |
| #VALUE! | 論理値など不正な型 | =OCT2DEC(TRUE) | TYPE関数でデータ型確認 |
OCT2BIN・OCT2DEC・OCT2HEX——3関数の選択ガイド
Excelには「8進数から変換する」関数が3つあります。変換先が異なるだけで、入力ルールは共通です。
変換先ごとの使い分け表
| 関数名 | 変換方向 | 桁数引数 | 正の入力上限 | 主な用途 |
|---|---|---|---|---|
| OCT2BIN | 8進数→2進数 | あり | 777(=511) | ビットパターンの分析 |
| OCT2DEC ※この記事 | 8進数→10進数 | なし | 3777777777(=536,870,911) | 集計・計算用の変換 |
| OCT2HEX | 8進数→16進数 | あり | 3777777777(=536,870,911) | メモリアドレス・カラーコード |
同じ8進数「53」を3つの関数で変換した例です。
=OCT2BIN(53) → 101011
=OCT2DEC(53) → 43
=OCT2HEX(53) → 2B
OCT2BINだけ正の入力上限が777(10進数で511)と小さい点に注意してください。大きな値を2進数に変換したい場合は、OCT2DECで10進数に変換してからDEC2BIN関数を使う方法もあります。同様に、10進数から16進数への変換ならDEC2HEX関数が使えますよ。
OCT2DECだけ桁数引数がない理由
OCT2BINとOCT2HEXには「桁数」引数があります。しかしOCT2DECにはありません。
理由は、10進数では先頭のゼロに意味がないからです。2進数や16進数では「00101011」「002B」のように桁をそろえる場面があります。しかし10進数で「0043」と書く必要はありませんよね。そのため桁数引数が不要なのです。
DEC2OCTとの逆変換ペアで使う
OCT2DEC関数の逆方向の変換を行うのがDEC2OCT関数です。
| 関数 | 変換方向 | 引数 |
|---|---|---|
| OCT2DEC | 8進数 → 10進数 | 数値(1つのみ) |
| DEC2OCT | 10進数 → 8進数 | 数値, [桁数](2つ) |
往復変換で入力値を検算する方法
両方の関数を組み合わせると、変換結果の検算ができます。
=DEC2OCT(OCT2DEC(A1))
この数式はA1の値を「8進数→10進数→8進数」と往復変換します。元の値と一致すれば、変換が正しいことを確認できますよ。
逆方向の検算も同様です。B1に10進数が入っているとします。
=OCT2DEC(DEC2OCT(B1))
「10進数→8進数→10進数」と変換して元に戻ります。B1の値と一致すれば検算OKです。
大量データを変換するときの品質チェックに役立ちます。IF関数と組み合わせれば、不一致のセルを自動検出できますよ。
16進数関連の変換関数との組み合わせ
8進数を直接16進数に変換するにはOCT2HEX関数を使います。しかし、OCT2DECで10進数に変換してから別の進数に変換する方法も便利です。
10進数を経由する変換ルートをまとめます。
| 変換ルート | 使う関数 | 例(8進数「53」の場合) |
|---|---|---|
| 8進数→10進数→16進数 | OCT2DEC → DEC2HEX | 53 → 43 → 2B |
| 8進数→10進数→2進数 | OCT2DEC → DEC2BIN | 53 → 43 → 101011 |
逆方向の変換もあります。16進数から他の進数に変換したい場合は、HEX2DEC関数で10進数にしてから目的の進数に変換します。HEX2BIN関数やHEX2OCT関数を使えば直接変換もできますよ。
10進数を中継点にすることで、どの進数間の変換にも対応できる柔軟性がOCT2DEC関数の強みです。
Excelの進数変換12関数シリーズ一覧
Excelには2進数・8進数・10進数・16進数を相互変換する関数が全12種類あります。命名規則は「変換元の略称 + 2 + 変換先の略称」です。
| 関数名 | 変換方向 |
|---|---|
| BIN2DEC | 2進数 → 10進数 |
| BIN2OCT | 2進数 → 8進数 |
| BIN2HEX | 2進数 → 16進数 |
| OCT2BIN | 8進数 → 2進数 |
| OCT2DEC ※この記事 | 8進数 → 10進数 |
| OCT2HEX | 8進数 → 16進数 |
| DEC2BIN | 10進数 → 2進数 |
| DEC2OCT | 10進数 → 8進数 |
| DEC2HEX | 10進数 → 16進数 |
| HEX2BIN | 16進数 → 2進数 |
| HEX2DEC | 16進数 → 10進数 |
| HEX2OCT | 16進数 → 8進数 |
この命名規則を覚えておけば、どの関数を使うか迷いませんよ。
まとめ
OCT2DEC関数は、8進数を10進数に変換するExcelの関数です。
ポイントを整理します。
- 構文は
=OCT2DEC(数値)で、引数は1つだけ - 桁数引数はない(OCT2BIN・OCT2HEXとの違い)
- 入力は0〜7の数字で、最大10文字まで
- 正の数: 0〜536,870,911、負の数: -536,870,912〜-1
- 負の数は2の補数形式で指定する(最上位桁4以上が負)
- #NUM!エラーは「8・9を含む」「10文字超」「無効な値」が原因
- #VALUE!エラーは論理値など不正なデータ型が原因
- IFERRORと組み合わせれば一括変換シートが作れる
- DEC2OCT関数との往復変換で検算できる
まずは =OCT2DEC(755) で「493」が返ることを試してみてください。Unixパーミッションの集計にすぐ活用できますよ。
