スプレッドシートで資料の章番号や目次をローマ数字で表示したいとき、「1 → I」「14 → XIV」を頭の中で変換するのは地味に面倒ですよね。特に「499」のような値をローマ数字で一発で書ける人は少ないはずです。
手入力だと変換ルールのミスも起きやすいですし、連番が増えるほど効率も落ちていきます。そんなときに役立つのが、スプレッドシートのROMAN関数ですよ。アラビア数字を渡すだけで、ローマ数字の文字列に変換してくれます。
この記事では、スプレッドシートのROMAN関数の構文から、第2引数「書式」0〜4の違い、ARABIC関数と組み合わせた表記統一、章番号の自動生成といった実務パターン、よくあるエラーの対処まで紹介します。コピペで使える数式も置いておきますね。
スプレッドシートのROMAN関数とは?
スプレッドシートのROMAN関数は、アラビア数字(1・2・3のような普通の数値)をローマ数字の文字列に変換する関数です。読み方は「ローマン」で、英語の「Roman(ローマの)」がそのまま関数名になっていますよ。
たとえば =ROMAN(14) と入力すると、結果は XIV が返ります。変換ルールを覚えていなくても、数値を渡すだけでローマ数字の文字列が手に入るのが嬉しいポイントですね。
関数の基本構文と引数
基本構文はシンプルで、引数は2つです。書式は省略できるので、ほとんどのケースでは1引数で十分ですよ。
=ROMAN(数値, [書式])
引数の意味を整理しておきましょう。
| 引数 | 意味 | 省略時の挙動 |
|---|---|---|
| 数値 | ローマ数字に変換するアラビア数字(1〜3999の整数) | 省略不可 |
| 書式 | 出力形式(0〜4、TRUE、FALSE のいずれか) | 省略時は0(正式表記) |
指定できる数値の範囲は1〜3999です。0や負数、4000以上を指定すると #VALUE! エラーになります。小数を指定した場合は、整数部分に切り捨てられて処理されますよ。
ARABIC関数との関係(逆変換ペア)
ROMAN関数には対になるARABIC関数があります。こちらはローマ数字の文字列をアラビア数字に変換する関数で、ROMANと組み合わせると双方向の変換ができます。
- ROMAN: アラビア数字 → ローマ数字(
14→XIV) - ARABIC: ローマ数字 → アラビア数字(
XIV→14)
3999以内の値であれば、=ARABIC(ROMAN(100)) のように入れ子にすると元の値に戻りますよ。表記ゆれしたローマ数字を一度ARABICで数値に戻し、ROMANで標準形式に変換し直す、といったクリーンアップ用途でもペアで活躍します。
ROMAN関数の書式引数(0〜4)の違い
ROMAN関数で少しクセがあるのが、第2引数の「書式」です。0が正式なクラシック表記で、数値が大きくなるほど文字数が少ない簡略表記になります。
書式の比較表(499の例)
499を例にとって、書式ごとの出力を並べてみますね。
| 書式値 | 意味 | 出力(499) | 文字数 |
|---|---|---|---|
| 0 または省略 | 正式(クラシック) | CDXCIX | 6文字 |
| 1 | やや簡略 | LDVLIV | 6文字 |
| 2 | さらに簡略 | XDIX | 4文字 |
| 3 | もう少し簡略 | VDIV | 4文字 |
| 4 | 最も簡略 | ID | 2文字 |
TRUE を指定すると書式0、FALSE を指定すると書式4と同じ結果になります。覚える必要はないので、迷ったら0か4だけ押さえておけばOKですよ。
実務でどの書式を選ぶか
結論から言うと、実務では書式0(省略)で十分です。中間の1〜3は意図的に使うシーンがほぼないので、「正式表記が長すぎるから短くしたい」という特殊な事情があるときだけ書式4を検討するくらいの感覚で問題ありません。
=ROMAN(999) → CMXCIX (正式:6文字)
=ROMAN(999, 0) → CMXCIX (書式0=正式:6文字)
=ROMAN(999, 4) → IM (最も簡略:2文字)
スペースが限られる表ラベルや凝ったデザインのレポートで「文字数を削りたい」というときには、書式4が役に立ちますよ。
ROMAN関数の基本的な使い方
それでは実際にいくつか使ってみましょう。数値を直接書くパターンと、セル参照でまとめて変換するパターンを押さえておけば、日常業務ではほぼ困りません。
数値を直接指定する
もっともシンプルな使い方です。引数に数値リテラルを入れるだけですね。
=ROMAN(1) → I
=ROMAN(5) → V
=ROMAN(10) → X
=ROMAN(50) → L
=ROMAN(100) → C
=ROMAN(500) → D
=ROMAN(1000) → M
=ROMAN(2024) → MMXXIV
ローマ数字の基本7文字(I・V・X・L・C・D・M)と、それらを組み合わせた大きな数値までしっかり変換できます。戻り値はすべてテキスト型(文字列)なので、SUMやAVERAGEなどの数値関数にはそのまま渡せない点だけ注意してくださいね。
セル参照でリストを一括変換する
実務では、セルに入った数値をまとめて変換するケースのほうが多いですよね。オートフィルと組み合わせると、100行あっても一瞬で処理できます。
A列に連番が並んでいるとしましょう。B1セルに次の式を入れて、下方向にフィルコピーするだけです。
=ROMAN(A1)
スプレッドシートらしく ARRAYFORMULA でまとめて処理してもOKです。
=ARRAYFORMULA(ROMAN(A1:A10))
範囲内の各セルに対してROMAN関数が適用され、結果が一括で並びます。数式が1つで済むので、後から範囲を変えたくなったときのメンテも楽ですよ。
書式引数で略式を指定する
第2引数を指定すると、出力の表記を切り替えられます。1999を例に並べてみますね。
=ROMAN(1999) → MCMXCIX (正式:7文字)
=ROMAN(1999, 0) → MCMXCIX (同上)
=ROMAN(1999, 4) → MIM (最も簡略:3文字)
書式4は略式なのでローマ数字の歴史的ルールからは外れた表記ですが、「列幅が狭くてどうしても文字数を削りたい」というデザイン都合のケースでは便利に使えますよ。
実務で使えるROMAN関数の活用パターン
ROMAN関数が本領を発揮するのは、定型的な番号表記を自動化したい場面です。手入力のミスや変換漏れをなくせるので、ドキュメント系の資料づくりで地味に効いてきますよ。
資料の章番号をローマ数字で自動採番
マニュアルや目次で「第I章」「第II章」のように章番号をローマ数字表記したいとき、ROMAN関数と文字列連結でサッと作れます。
A列に連番(1, 2, 3…)が入っている前提で、B列に章番号を生成しましょう。
="第" & ROMAN(A1) & "章"
結果は「第I章」「第II章」「第III章」…と並びます。章が増減しても、連番部分を書き換えるかフィルコピーするだけで追従してくれますよ。
ROW 関数と組み合わせれば、連番列すら用意しなくてOKです。
="第" & ROMAN(ROW()) & "章"
1行目に入れれば「第I章」、2行目なら「第II章」と、行位置に応じた章番号が自動で付きます。見出しだけのシンプルな目次シートにそのまま流用できますよ。
ARABIC関数と組み合わせて表記統一
ローマ数字が混在したデータで、「IIII」(非標準)と「IV」(標準)のような表記ゆれを統一したい場面にも使えます。ARABICで一度数値に戻してから、ROMANで標準形式に変換し直すパターンですね。
=ROMAN(ARABIC(A1))
A1に「IIII」が入っていても、ARABIC で 4 に変換され、ROMAN が標準形式の IV を返します。データクレンジングの定番テンプレートとして覚えておくと便利ですよ。
逆方向、つまりローマ数字をアラビア数字に戻したいだけなら =ARABIC(A1) だけでOKです。ROMANとARABICはペアで使える関数として覚えておいてください。
リスト番号や通しナンバーをローマ数字で出力
順位表やリスト番号をローマ数字で並べたいときも同じ考え方で使えます。ROW関数で行番号を取って、ROMANで変換するだけです。
=ROMAN(ROW() - 1) & ". " & A1
見出し行が1行目にあるときは ROW() - 1 で1から採番できますよ。「I. 導入」「II. 現状分析」「III. 提案」といった目次リストが1式で組み上がります。
ROMAN関数とARABIC関数の使い分け
ROMAN関数とARABIC関数は逆変換の関係にあるので、どちらを選ぶかは「入力がどちらの形式か」で自然に決まります。とはいえ、範囲の違いには少しクセがあるので整理しておきましょう。
変換方向と対応範囲の比較
| 関数 | 変換方向 | 入力範囲 | 戻り値の型 | 典型用途 |
|---|---|---|---|---|
| ROMAN | アラビア数字 → ローマ数字 | 1〜3999(整数) | 文字列 | 章番号の自動生成、目次のラベル作成 |
| ARABIC | ローマ数字 → アラビア数字 | 任意のローマ数字の文字列 | 数値 | ローマ数字のデータを数値演算に利用 |
ROMAN側は「1〜3999」という明確な上限があるのに対して、ARABIC側はもう少し広い範囲のローマ数字文字列を受け付けます。逆方向(ARABIC)のほうが対応範囲は広い、と覚えておくといいですよ。
どちらを使うべきか判断するポイント
実務での選び方はシンプルです。次のどちらに該当するかで迷わず決められますよ。
- 数値をローマ数字の見た目に変えたい(章番号・目次・ラベル)→ ROMAN
- ローマ数字を計算や集計に使いたい(並び替え・比較・SUM)→ ARABIC
両方をネストして =ROMAN(ARABIC(A1)) とすれば、「ローマ数字を入れて標準形式に整える」という表記統一用途にも使えます。片方向だけで足りないときはペアで活用してください。
よくあるエラーと対処法
ROMAN関数でハマりやすいポイントを3つまとめました。原因と対策をセットで押さえておくと、現場で詰まりにくくなりますよ。
“#VALUE!” エラー(範囲外の数値)
もっともよく見るのが、範囲外の数値を渡したケースです。ROMAN関数は 1〜3999 の整数しか受け付けないので、このラインを外すとエラーになります。
| 入力例 | 結果 | 原因 |
|---|---|---|
=ROMAN(0) | #VALUE! | ローマ数字に0は存在しない |
=ROMAN(-5) | #VALUE! | 負の値は変換できない |
=ROMAN(4000) | #VALUE! | 上限は3999 |
=ROMAN("abc") | #VALUE! | 数値以外は受け付けない |
一番引っかかりやすいのは、=ROMAN(0) です。IFERROR でラップしておけば、空セルやゼロを含むデータでも安全に処理できますよ。
=IFERROR(ROMAN(A1), "")
エラー時は空文字を返すようにしておくと、章番号リストにゼロ行が混ざっても表示が崩れません。
“#NUM!” エラー(書式引数が不正)
第2引数の書式に 0〜4 以外の数値を指定すると #NUM! エラーになります。たとえば =ROMAN(10, 5) のようなケースですね。
書式は 0・1・2・3・4 の5段階+TRUE/FALSE だけが有効なので、「5 くらいでも通るかな」と試して引っかかるパターンが多いです。書式を可変にしたい場合は、事前に IF や MIN/MAX で 0〜4 の範囲にクランプしておくと安全ですよ。
=ROMAN(A1, MIN(MAX(B1, 0), 4))
B1に書式番号が入る前提で、0未満は0に、4超は4に丸める式です。ユーザー入力を引数に渡すフォーム的な使い方をするときに役立ちます。
小数を渡した場合の挙動
小数を渡してもエラーにはならず、整数部分に切り捨てられて処理されます。=ROMAN(3999.9) は MMMCMXCIX を返しますし、=ROMAN(0.9) は #VALUE!(整数部分が0のため)になりますよ。
意図しない切り捨てを避けたい場合は、INT や ROUND で事前に丸めておくと挙動が明確になります。
=ROMAN(INT(A1))
=ROMAN(ROUND(A1, 0))
データに小数が混ざる可能性がある場合は、この一手間を入れておくと後から見返したときに読みやすいですよ。
まとめ
スプレッドシートのROMAN関数は、アラビア数字をローマ数字の文字列に変換する、章番号や目次の自動生成で活躍する関数です。最後に要点を整理しておきましょう。
- 構文は
=ROMAN(数値, [書式])の2引数。書式は省略可能で、省略時は正式表記(書式0) - 変換できるのは 1〜3999 の整数。0・負数・4000以上は
#VALUE!エラー - 戻り値は文字列なので、SUM などの数値関数に直接は渡せない
- 書式は 0(正式)と 4(最も簡略)を押さえれば実務には十分
- 小数は整数部分に切り捨てられる
- 対になる ARABIC 関数と組み合わせると、表記ゆれ統一や双方向変換ができる
- エラー対策は
IFERRORでラップ、書式引数は 0〜4 にクランプ
まずは =ROMAN(A1) を目次や章番号シートに当ててみてください。ARRAYFORMULA や ROW と組み合わせれば、ドキュメントのナンバリング作業がぐっと楽になりますよ。
