スプレッドシートで資料の章番号や目次をローマ数字で表示したいとき、頭の中で「1 → I」「14 → XIV」と変換するのは地味に面倒ですよね。特に「499」のような値をローマ数字で一発で書ける人は少ないはずです。
手入力だと変換ルールのミスも起きやすいですし、連番が増えるほど効率も落ちていきます。そんなときに役立つのが、スプレッドシートのROMAN関数ですよ。アラビア数字を渡すだけで、ローマ数字の文字列に変換してくれます。
この記事では、スプレッドシートのROMAN関数の構文と書式引数0〜4の違いを整理します。さらに、ARABIC関数と組み合わせた表記統一や章番号の自動生成といった実務パターン、よくあるエラーの対処まで紹介しますね。コピペで使える数式も置いておきます。
スプレッドシートのROMAN関数とは?
スプレッドシートのROMAN関数は、アラビア数字(1・2・3のような普通の数値)をローマ数字の文字列に変換する関数です。読み方は「ローマン」で、英語の「Roman(ローマの)」がそのまま関数名になっていますよ。
たとえば =ROMAN(14) と入力すると、結果は XIV が返ります。変換ルールを覚えていなくても、数値を渡すだけでローマ数字の文字列が手に入るのが嬉しいポイントですね。
Googleスプレッドシートにも Microsoft Excel にも同じ名前で用意されていて、構文や挙動はほぼ共通です。どちらの環境でも、この記事の数式をそのままコピペで使えますよ。
関数の基本構文と引数
基本構文はシンプルで、引数は2つです。書式は省略できるので、ほとんどのケースでは1引数で十分ですよ。
=ROMAN(数値, [書式])
| 引数 | 内容 | 省略 |
|---|---|---|
| 数値 | 変換したいアラビア数字(1〜3999の整数) | 必須 |
| 書式 | 出力の表記タイプ(0〜4、またはTRUE/FALSE) | 省略可(既定0) |
数値が0以下、または4000以上のときは #VALUE! エラーになります。ROMANはあくまで1〜3999の整数を変換するための関数だと覚えておいてくださいね。
書式引数の比較表(499・999・1999の例)
書式は 0〜4 の5段階で、数字が大きいほど略式(短い表記)になります。499・999・1999 の3つで並べてみますね。
| 書式値 | 意味 | 499 | 999 | 1999 |
|---|---|---|---|---|
| 0(省略) | 正式(クラシック) | CDXCIX | CMXCIX | MCMXCIX |
| 1 | やや簡略 | LDVLIV | LMVLIV | MLMVLIV |
| 2 | さらに簡略 | XDIX | XMIX | MXMIX |
| 3 | もう少し簡略 | VDIV | VMIV | MVMIV |
| 4 | 最も簡略 | ID | IM | MIM |
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
!_images/spreadsheet-roman-function/02_result_roman-basic.png
ローマ数字の基本7文字(I・V・X・L・C・D・M)と、それらを組み合わせた大きな数値までしっかり変換できます。
戻り値はすべてテキスト型(文字列)です。SUMやAVERAGEなどの数値関数にはそのまま渡せないので、その点だけ注意してくださいね。
セル参照でリストを一括変換する
実務では、セルに入った数値をまとめて変換するケースのほうが多いですよね。オートフィルと組み合わせると、100行あっても一瞬で処理できます。
A列に連番が並んでいるとしましょう。B1セルに次の式を入れて、下方向にフィルコピーするだけです。
=ROMAN(A1)

Googleスプレッドシートなら ARRAYFORMULA関数 でまとめて処理してもOKですよ。Excel ではこの記法は使えないので、代わりにスピル機能付きの配列対応関数を使うか、フィルコピーで対応してくださいね。
=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関数でよくあるエラーと対処法
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でラップ、書式引数はMIN/MAXで 0〜4 にクランプ
まずは =ROMAN(A1) を目次や章番号シートに当ててみてください。ARRAYFORMULA や ROW と組み合わせれば、ドキュメントのナンバリング作業がぐっと楽になりますよ。
