スプレッドシートのARABIC関数|ローマ数字を数値に変換して並べ替え

スポンサーリンク

スプレッドシートでローマ数字を普通の数字に直すなら、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つの記号の組み合わせで数を表します。

記号IVXLCDM
数値1510501005001000

大きい記号の右に小さい記号を置くと足し算(VI = 6)、左に置くと引き算(IV = 4)です。引き算になる組み合わせは、次の6つを覚えておけば十分でしょう。

ローマ数字IVIXXLXCCDCM
数値494090400900

たとえば 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」より前に来てしまいます。

文字列のまま並べ替え本来の順(数値)
II(1)
IIII(2)
IIIIII(3)
IVIV(4)
IXV(5)
VVI(6)
VIVII(7)
VIIVIII(8)
VIIIIX(9)
XX(10)

5〜9番目がずれているのが分かるでしょうか。9 を表す IX が 5 の V より先に並んでいます。数値に変換してから並べる必要があるのは、このため。

補助列でARABICに変換してから並べ替える(SORT または[範囲を並べ替え])

次のような規程の章リストを例にします。A列が章番号、B列が内容、C列が補助列。

 A(章)B(内容)C(=ARABIC(A2))
2IV経費精算4
3I総則1
4IX附則9
5II勤務時間2
6V休暇5
7III給与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章IV4
II-3II2
Chapter IXIX9

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")1414
年号=ARABIC("MMXIII")20132013
上限ちょうど=ARABIC("MMMCMXCIX")39993999
3999 超=ARABIC("MMMM")#VALUE!受け付ける(最大 255 文字)
小文字=ARABIC("xiv")14区別しない
大文字・小文字の混在=ARABIC("XiV")14区別しない
前後の空白=ARABIC(" XIV ")14無視する
途中の空白=ARABIC("X IV")#VALUE!記載なし
負号付き=ARABIC("-XIV")-14負の値に対応
空文字=ARABIC("")00
空白セルを参照=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関数と組み合わせると表記をそろえられます。

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