スプレッドシートでローマ数字を普通の数字に直すなら、ARABIC関数がいちばん手軽です。=ARABIC("XIV") と書けば、結果は 14。セルに入ったローマ数字も =ARABIC(A2) で同じように変換できます。
困るのは、ローマ数字が「第IV章」「II-3」のように文字と混ざっているケースでしょう。文字列のまま並べ替えると I, II, III, IV, IX, V… と順番が崩れ、目で見て直すしかなくなります。
この記事では、ローマ数字だけを抜き出して数値に変え、正しい順に並べ替えるまでの手順を紹介します。全角の「Ⅳ」や余計な文字で #VALUE! が出たときの直し方もまとめました。
スプレッドシートのARABIC関数の基本(書き方・使える記号・ROMANとの関係)
ARABIC関数は「アラビック」と読みます。由来は英語の Arabic numeral(アラビア数字)。ローマ数字の文字列を、1、2、3 のような数値に変える関数です。
構文と引数(=ARABIC(“XIV”) で 14)
構文はとてもシンプルで、引数は1つだけ。
=ARABIC(ローマ数字)
| 引数 | 内容 | 例 |
|---|---|---|
| ローマ数字 | ローマ数字の文字列、またはそれが入ったセル | “XIV” / A2 |
Google の公式ヘルプでは、指定できる値は「1 以上 3999 以下」とされています。公式に載っている使用例は次の2つです。
=ARABIC("XIV") → 14
=ARABIC("MMXIII") → 2013
戻り値は数値として返ります。そのまま足し算や MAX、並べ替えの基準に使えるのが便利なところ。
ローマ数字の記号と読み方の対応表
ローマ数字は、7つの記号の組み合わせで数を表します。
| 記号 | I | V | X | L | C | D | M |
|---|---|---|---|---|---|---|---|
| 数値 | 1 | 5 | 10 | 50 | 100 | 500 | 1000 |
大きい記号の右に小さい記号を置くと足し算(VI = 6)、左に置くと引き算(IV = 4)です。引き算になる組み合わせは、次の6つを覚えておけば十分でしょう。
| ローマ数字 | IV | IX | XL | XC | CD | CM |
|---|---|---|---|---|---|---|
| 数値 | 4 | 9 | 40 | 90 | 400 | 900 |
たとえば MMXXV は、1000 + 1000 + 10 + 10 + 5 で 2025 です。MCMXCIX なら 1000 + 900 + 90 + 9 で 1999 になります。
直接指定とセル参照(直接書くときは引用符で囲む)
関数の中にローマ数字を直接書くときは、必ずダブルクォーテーションで囲みます。=ARABIC(XIV) のように囲み忘れると、XIV が文字列として扱われず#NAME? エラーになります。
=ARABIC("LVIII") → 58
=ARABIC(A2) → A2 に XIV が入っていれば 14
セルに入力したローマ数字には、引用符は要りません。B2 に =ARABIC(A2) と入れ、フィルハンドルで下にコピーすれば列ごと変換できます。
ROMAN関数との関係(逆の変換)
数値をローマ数字に変える逆向きの関数が ROMAN です。=ROMAN(14) で “XIV” が返るので、ARABIC と組み合わせれば往復の変換ができます。
ROMAN の引数や簡略形式の詳しい使い方は、スプレッドシートのROMAN関数の使い方にまとめています。
ローマ数字入りのデータを数値順に並べ替え・集計する
ここからが実務の本番。章番号や条項のように、ローマ数字が入った列を正しい順に並べる方法を見ていきます。
文字列のまま並べ替えると I, II, III, IV, IX, V… と崩れる(ビフォー表)
ローマ数字は、セルの中ではただの文字列です。並べ替えるとアルファベット順に1文字目から比べるため、「IX」(先頭が I)が「V」より前に来てしまいます。
| 文字列のまま並べ替え | 本来の順(数値) |
|---|---|
| I | I(1) |
| II | II(2) |
| III | III(3) |
| IV | IV(4) |
| IX | V(5) |
| V | VI(6) |
| VI | VII(7) |
| VII | VIII(8) |
| VIII | IX(9) |
| X | X(10) |
5〜9番目がずれているのが分かるでしょうか。9 を表す IX が 5 の V より先に並んでいます。数値に変換してから並べる必要があるのは、このため。
補助列でARABICに変換してから並べ替える(SORT または[範囲を並べ替え])
次のような規程の章リストを例にします。A列が章番号、B列が内容、C列が補助列。
| A(章) | B(内容) | C(=ARABIC(A2)) | |
|---|---|---|---|
| 2 | IV | 経費精算 | 4 |
| 3 | I | 総則 | 1 |
| 4 | IX | 附則 | 9 |
| 5 | II | 勤務時間 | 2 |
| 6 | V | 休暇 | 5 |
| 7 | III | 給与 | 3 |
C2 に =ARABIC(A2) を入れて C7 までコピーしたら、空いている場所に SORT 関数を書きます。
=SORT(A2:B7, C2:C7, TRUE)
SORT の2つ目の引数には、範囲と同じ行数の別の列も指定できます。C列の数値を基準に、A〜B列が昇順で並ぶ仕組みです。
| A(章) | B(内容) |
|---|---|
| I | 総則 |
| II | 勤務時間 |
| III | 給与 |
| IV | 経費精算 |
| V | 休暇 |
| IX | 附則 |
補助列を作りたくない場合は、基準の列を式で作ってもかまいません。
=SORT(A2:B7, ARRAYFORMULA(ARABIC(A2:A7)), TRUE)
元の表そのものを並べ替えたいなら、メニューの[データ]→[範囲を並べ替え]で C列を基準に選びます。この場合、補助列は1行ずつの式(フィルハンドルでコピーしたもの)にしておくと扱いやすいでしょう。
「第IV章」「II-3」「Chapter IX」はREGEXEXTRACTでローマ数字だけ抜き出す
章番号に「第」「章」などの文字が付いていると、ARABIC にそのまま渡せません。そこで REGEXEXTRACT関数で、ローマ数字の部分だけを先に抜き出します。
形が「第◯章」にそろっているなら、前後の文字を正規表現に含めるのが確実です。
=ARABIC(REGEXEXTRACT(A2, "第([IVXLCDM]+)章"))
丸括弧(キャプチャグループ)を使うと、REGEXEXTRACT は括弧の中だけを返します。「第IV章」なら IV が取り出され、ARABIC で 4 になります。
表記がバラバラな列なら、単語の区切りを表す b を付けた汎用の式を使いましょう。
=ARABIC(REGEXEXTRACT(A2, "b[IVXLCDM]+b"))
| A(元データ) | 抜き出し結果 | ARABIC の結果 |
|---|---|---|
| 第IV章 | IV | 4 |
| II-3 | II | 2 |
| Chapter IX | IX | 9 |
b を外すと、「Chapter IX」の先頭の C を拾ってしまいます。C は 100 なので、9 のはずが 100 になる誤変換が起きるわけです。
ただし、「CD」「MIX」のような大文字の英単語が先にあると、それを拾う点には注意しましょう。一致する部分がないセル(たとえば「abc 123」)は #N/A エラーになるので、次の一括変換の式で IFERROR を組み合わせます。
ARRAYFORMULA+IF+IFERRORで列全体を一括変換する
行が増えるたびに式をコピーするのが面倒なら、ARRAYFORMULA関数で列全体をまとめて変換します。B2 に1回書くだけで、B列の下まで結果が出るテンプレートです。
=ARRAYFORMULA(IF(A2:A="", "", IFERROR(ARABIC(REGEXEXTRACT(A2:A, "b[IVXLCDM]+b")), "")))
| 部品 | 役割 |
|---|---|
IF(A2:A="", "", …) | A列が空の行は空欄のままにする |
REGEXEXTRACT(…) | ローマ数字の部分だけを抜き出す |
ARABIC(…) | 抜き出した文字列を数値に変える |
IFERROR(…, "") | 抜き出せない・変換できない行を空欄にする |
B3 から下は空けておいてください。何か入力されていると、結果を展開できずに #REF! エラーになります。
数値になってしまえば、集計も普通の数字と同じ。先ほどの3行(4・2・9)なら、=MAX(B2:B) で最大の章番号 9 が求まります。=COUNTIF(B2:B, ">=5") のように「第V章以降の件数」を数えるのも簡単です。
ROMANと往復して表記をそろえる
担当者ごとに「第I章」「第2章」のように表記が混ざった列も、往復の変換でそろえられます。まず B列で、どちらの表記からも数値を取り出しましょう。
=IFERROR(ARABIC(REGEXEXTRACT(A2, "第([IVXLCDM]+)章")), VALUE(REGEXEXTRACT(A2, "第(d+)章")))
ローマ数字が見つからない行では IFERROR が働き、アラビア数字の方を取り出します。続けて C列に ="第"&ROMAN(B2)&"章" を入れると、ローマ数字の表記に統一できます。
| A(元データ) | B(数値) | C(ローマ数字に統一) |
|---|---|---|
| 第I章 | 1 | 第I章 |
| 第2章 | 2 | 第II章 |
| 第III章 | 3 | 第III章 |
| 第4章 | 4 | 第IV章 |
アラビア数字にそろえたい場合は、C列を ="第"&B2&"章" にするだけでOK。
ARABICが受け付ける入力・受け付けない入力(スプレッドシートで試した結果)
Google の公式ヘルプに書かれているのは「1 以上 3999 以下」だけです。小文字や空白、空のセル、全角文字の扱いは記載がありません。
ネット上の解説には「小文字も使える」「空文字は 0」といった説明もあります。これらは Excel の ARABIC の公式仕様ですが、スプレッドシートで実際に試すと、小文字・前後の空白・負号・空文字は通り、3999 超や途中の空白、IIII のような非標準表記は #VALUE! になりました(2026年10月に Google スプレッドシートで確認)。
入力パターン別の結果早見表(小文字・空白・空セル・非標準表記・上限・数値)
| 入力パターン | 式 | 結果 | Excel の公式仕様 |
|---|---|---|---|
| 標準の表記 | =ARABIC("XIV") | 14 | 14 |
| 年号 | =ARABIC("MMXIII") | 2013 | 2013 |
| 上限ちょうど | =ARABIC("MMMCMXCIX") | 3999 | 3999 |
| 3999 超 | =ARABIC("MMMM") | #VALUE! | 受け付ける(最大 255 文字) |
| 小文字 | =ARABIC("xiv") | 14 | 区別しない |
| 大文字・小文字の混在 | =ARABIC("XiV") | 14 | 区別しない |
| 前後の空白 | =ARABIC(" XIV ") | 14 | 無視する |
| 途中の空白 | =ARABIC("X IV") | #VALUE! | 記載なし |
| 負号付き | =ARABIC("-XIV") | -14 | 負の値に対応 |
| 空文字 | =ARABIC("") | 0 | 0 |
| 空白セルを参照 | =ARABIC(A2)(A2 が空) | 0 | 記載なし |
| 非標準の表記 | =ARABIC("IIII") / "VIIII" | #VALUE!(IIII も VIIII も) | 記載なし |
| 規則外の並び | =ARABIC("IM") / "VX" | "IM" は 999、"VX" は #VALUE! | 記載なし |
| ROMAN の簡略形式 | =ARABIC(ROMAN(499,4))(= “ID”) | 499(”ID” から元の数に戻る) | 記載なし |
| 全角ローマ数字 | =ARABIC("Ⅳ") | #VALUE! | 記載なし |
| 全角英字 | =ARABIC("XIV") | #VALUE! | 記載なし |
| 全角英字を ASC で変換 | =ARABIC(ASC("XIV")) | 14 | 記載なし |
| 数値 | =ARABIC(14) | #VALUE! | #VALUE! |
| ゼロ | =ARABIC("0") | #VALUE! | 記載なし |
表の「結果」列は、スプレッドシートで実際に入力した結果です。Excel の公式ヘルプとはっきり食い違うのは、3999 超(Excel は最大 255 文字まで受け付ける)の行です。IIII のような非標準表記や IM(999)のような規則外の並びは、公式に記載がないので、スプレッドシートで試した結果として受け取ってください。
迷ったときは、ARABIC に渡す前に大文字・半角・空白なしの形へそろえておくのが安全です。前処理の具体的なやり方は、次の章を参考にしてください。
#VALUE!の原因と対処
ARABIC で #VALUE! が出るときは、渡した文字列をローマ数字として読めていないのがほとんどです。原因ごとに、前処理の方法を見ていきましょう。
全角ローマ数字(Ⅰ Ⅱ)・全角英字(XIV)が混ざっている
日本語環境で起きやすいのが、全角の「Ⅳ」が紛れ込むケースです。Ⅳ は I と V を並べたものではなく、それ自体で1つの別の文字(Unicode の U+2163)になっています。
全角ローマ数字は SUBSTITUTE関数で、半角の英字に置き換えてから ARABIC に渡します。Ⅰ〜Ⅻ をまとめて置き換える式は次のとおりです。
=ARABIC(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A2,"Ⅻ","XII"),"Ⅺ","XI"),"Ⅹ","X"),"Ⅸ","IX"),"Ⅷ","VIII"),"Ⅶ","VII"),"Ⅵ","VI"),"Ⅴ","V"),"Ⅳ","IV"),"Ⅲ","III"),"Ⅱ","II"),"Ⅰ","I"))
セルに Ⅰ〜Ⅻ の1文字だけが入っているなら、文字コードから計算する短い式も使えます。Ⅰ の文字コードは 10進で 8544 なので、そこから 8543 を引けば 1〜12 が求まる仕組み。
=UNICODE(A2)-8543
全角英字の「XIV」は、そのままだと #VALUE! です。全角の英数字を半角にする ASC 関数を通せば、=ARABIC(ASC(A2)) で 14 になります。
「第」「章」や空白など余計な文字が付いている
ローマ数字以外の文字が付いているなら、並べ替えの章で紹介した REGEXEXTRACT で抜き出すのが基本です。
REGEXREPLACE関数で、ローマ数字以外の文字を消す方法もあります。
=ARABIC(REGEXREPLACE(A2, "[^IVXLCDM]", ""))
式は短いものの、英単語の大文字まで残る点が落とし穴です。「Chapter IX」だと C と IX が残って CIX になり、109 という誤った結果になります。日本語の「第IV章」のような列に限って使いましょう。
小文字や前後の空白が混じる列は、UPPER関数と TRIM関数で先にそろえておくと結果が安定します。
=ARABIC(UPPER(TRIM(A2)))
ローマ数字として読めない並び・範囲外の値
「ABC」のように、ローマ数字に使わない文字だけの文字列は#VALUE! になります。公式の範囲(1〜3999)を超える値や、IIII・VIIII のような非標準の表記も同じく #VALUE! です。
他の入力の扱いは、前の章の早見表で確認してください。3999 超は数値で返らずエラーになるため、=IF(B2>3999, ...) のような数値チェックは働きません。範囲外や読めない値が混じりそうな列は、=IFERROR(ARABIC(A2), "範囲外または不正") のように IFERROR で拾うと見落としません。
IFERRORでエラーを空欄にする
前処理をしても読めない行が残るなら、IFERROR関数で包んでエラー表示を消します。
=IFERROR(ARABIC(A2), "")
空欄にすると、変換できなかった行が埋もれて見落としやすくなります。後で直すつもりなら、第2引数を "要確認" にしておくとフィルタで拾えて便利です。
よくある質問
いくつまで変換できますか?
Google の公式ヘルプで示されている範囲は 1〜3999 です。MMMM(4000)のように範囲を超える入力は、試した限り #VALUE! になりました。逆変換の ROMAN も 1〜3999 なので、往復で使うならこの範囲に収めておくのが無難です。
全角のⅠ Ⅱはそのまま使えますか?
Ⅰ・Ⅱ は半角の I とは別の文字です。#VALUE! が出る場合は、SUBSTITUTE で半角の英字に置き換えてから ARABIC に渡してください。1文字だけのセルなら =UNICODE(A2)-8543 でも数値にできます。
ExcelのARABIC関数との違いは?
Excel の公式ヘルプには、最大 255 文字・空文字は 0・負の値に対応・前後の空白は無視、と明記されています。スプレッドシートの公式ヘルプにあるのは「1 以上 3999 以下」だけで、同じ仕様とは書かれていません。
Excel での使い方は ExcelのARABIC関数|ローマ数字を数値に変換する使い方 で解説しています。
2進数・16進数の文字列を10進数にしたいときは?
ARABIC が扱えるのはローマ数字だけ。”1010″ や “FF” のような2進数・16進数の文字列なら、DECIMAL関数で基数を指定して10進数に変換できます。
まとめ
スプレッドシートのARABIC関数は、ローマ数字を数値に変える関数です。数値にさえなれば、並べ替えも集計も普通の数字と同じように扱えます。
- 構文は
=ARABIC(ローマ数字)。=ARABIC("XIV")で 14 - 公式の対応範囲は 1 以上 3999 以下
- 文字列のまま並べ替えると I, II, III, IV, IX, V… と崩れるので、数値に変換して SORT する
- 「第IV章」「Chapter IX」は REGEXEXTRACT(
b付き)でローマ数字だけ抜き出す - 列全体は ARRAYFORMULA+IF+IFERROR のテンプレートで一括変換
- 全角の Ⅳ・XIV は SUBSTITUTE や ASC で半角にそろえてから渡す
- 小文字・前後の空白・負号・空文字は通るが、3999 超・IIII・全角文字は
#VALUE!(早見表で確認)
まずは手元の章番号の列に補助列を1本足して、=ARABIC(A2) から試してみてください。逆にローマ数字で表示したくなったら、ROMAN関数と組み合わせると表記をそろえられます。
