ExcelでIPv4アドレスを扱うとき、「最後のオクテットだけ+1したい」「/29の先頭アドレスから使えるホストを一括で出したい」といった場面は意外と多いものです。ところがIPは“数値”ではなく“ドット区切りの文字列”なので、単純な加算では崩れやすいのが落とし穴。この記事では、列Aに入力した先頭IP(例:192.168.1.0)から、隣の列に“末尾オクテットだけ”を+1したIPを作る方法を、Excelの環境別にわかりやすく整理します。
やりたいこと:IPv4アドレスの最後のオクテットだけを+1
前提はシンプルで、A列に/29ネットワークの先頭IP(例:192.168.1.0)を入力しておき、B列に192.168.1.1のように「最後のオクテット(第4オクテット)だけ」を+1したい、というものです。
ここで重要なのは、“最後だけ”を増やすのか、それとも255→0の桁上がり(キャリー)まで含めて正しく増やすのか、の違いです。/29の展開(先頭~先頭+7)に限るなら、末尾だけを足す式で十分なケースがほとんど。一方で、255境界を跨ぐ可能性がある運用(/24をまたいで連番を作る等)では、本格派の式が必要になります。
| 目的 | おすすめ解 | 特徴 |
|---|---|---|
| /29の範囲で末尾だけ+1 | 解1 または 解2 | 軽量・コピペしやすい(キャリーなし) |
| /29を横に8個まとめて生成 | 解3 | 動的配列で一気にスピル |
| 255境界も含めて+1を正しく処理 | 解4 | IPv4→32ビット整数→+1→IPv4へ復元 |
解1:従来関数だけで作る(汎用・シンプル、採用されやすい)
Microsoft 365ではない環境(Excel 2016/2019/2021など)でも動きやすい、互換性重視の式です。やっていることは「3つ目のドットの位置を探す → 左側(3つ目のドットまで)と右側(末尾オクテット)に分ける → 末尾を数値化して+1 → 再結合」です。
=LEFT(A1, FIND("~", SUBSTITUTE(A1, ".", "~", 3))) & (RIGHT(A1, LEN(A1) - FIND("~", SUBSTITUTE(A1, ".", "~", 3))) + 1)
仕組みのポイント
- SUBSTITUTEで3つ目の「.」だけを一時的に「~」に置換し、そこを目印にします。
- FINDで「~」の位置(=3つ目のドット位置)を取得します。
- LEFTで「3つ目のドットまで」を抜き出す(末尾にドットが残る)ので、後ろの数値をそのまま連結できます。
- RIGHTで末尾のオクテットだけを取り出し、+1で数値として加算します。
注意点(この式が“しないこと”)
- この式は末尾オクテットだけを加算します。例えば192.168.1.255 → 192.168.1.256になり、IPv4としては不正です(キャリーしない)。
- 末尾に先頭ゼロがある場合、数値化で落ちます(例:005 → 5)。IP表記として通常は問題になりませんが、表記にこだわるなら別途整形が必要です。
動作例
| A列(入力) | 解1の結果 | メモ |
|---|---|---|
| 192.168.1.0 | 192.168.1.1 | /29のホスト先頭としてよく使う |
| 10.0.0.7 | 10.0.0.8 | /29の次ネットワーク先頭に相当 |
| 192.168.1.255 | 192.168.1.256 | キャリーが必要な例(解4向き) |
解2:Microsoft 365があるなら最短で読みやすい(TEXTBEFORE/TEXTAFTER)
Microsoft 365(または新しめのExcel)でTEXTBEFOREとTEXTAFTERが使えるなら、同じことをより読みやすく書けます。保守もしやすく、式の意図が伝わりやすいのがメリットです。
=TEXTBEFORE(A1,".",3) & "." & (VALUE(TEXTAFTER(A1,".",3)) + 1)
- TEXTBEFORE(A1,”.”,3):3つ目のドットより前(例:192.168.1)
- TEXTAFTER(A1,”.”,3):3つ目のドットより後(例:0)
- VALUEで数値化して+1し、前半+「.」+後半で戻します
やっていること自体は解1と同じなので、キャリーはしません。/29の先頭から+1してホストを1つずつ作る用途なら、まずこの式が最有力です。
解3:動的配列で/29を横方向に8個まとめて生成(SEQUENCE/LET)
/29は8アドレスのブロックなので、先頭IPから先頭~先頭+7を一気に作れたほうが、台帳や払い出し表では便利です。Microsoft 365ならSEQUENCEで連番を作って、横にスピルさせられます。
=LET(base,$A1, TEXTBEFORE(base,".",3) & "." & SEQUENCE(,8, VALUE(TEXTAFTER(base,".",3)), 1))
この式で得られるもの
- 右方向に8セルへスピルして、baseの末尾オクテットから0,1,2,3,4,5,6,7を自動生成します。
- $A1は「列だけ固定」なので、下へコピーすると行ごとの先頭IPに追従します。
/29の“使えるホストだけ”を出す(先頭+1〜先頭+6)
/29では一般に、先頭はネットワークアドレス、先頭+7はブロードキャストアドレスで、ホストとして使えるのは先頭+1〜先頭+6です。必要なのが利用可能ホストだけなら、6個生成にすると実務で事故りにくくなります。
=LET(base,$A1, TEXTBEFORE(base,".",3) & "." & SEQUENCE(,6, VALUE(TEXTAFTER(base,".",3))+1, 1))
/29の内訳を表で把握しておく
| 相対値 | アドレス種別 | 実務メモ(例) |
|---|---|---|
| 先頭+0 | ネットワークアドレス | ルーティング/設定値として必要、ホストには割り当てない |
| 先頭+1〜先頭+6 | 利用可能ホスト | 機器IP、VIP、GWなどに利用 |
| 先頭+7 | ブロードキャスト | ホストには割り当てない(例外運用は組織ルール次第) |
横ではなく“縦”に並べたい場合
スピルの向きは横が基本ですが、縦にしたいなら結果をTRANSPOSEで転置すると扱いやすいです(参照先のセル設計が楽になります)。
=LET(base,$A1, TRANSPOSE(TEXTBEFORE(base,".",3) & "." & SEQUENCE(,8, VALUE(TEXTAFTER(base,".",3)), 1)))
解4:桁上がり(キャリー)も正しく扱う“本格派”(IPv4を32ビット化)
「末尾が255でも正しく+1したい」「192.168.1.255の次は192.168.2.0にしたい」といった用途では、文字列のまま部分的に足すのではなく、IPv4全体を32ビット整数として扱うのが最も堅牢です。
考え方は次の通りです。
- IPv4(a.b.c.d)を a×256³ + b×256² + c×256 + d の整数に変換する
- その整数に +1 する(これでキャリーが自然に処理される)
- 結果を 256で割った商と余りで再び4オクテットに分解し、ドットで結合する
=LET(o,--TEXTSPLIT(A1,"."),
n, INDEX(o,1,1)*256^3 + INDEX(o,1,2)*256^2 + INDEX(o,1,3)*256 + INDEX(o,1,4) + 1,
a, QUOTIENT(n,256^3),
r, MOD(n,256^3),
b, QUOTIENT(r,256^2),
r2, MOD(r,256^2),
c, QUOTIENT(r2,256),
d, MOD(r2,256),
TEXTJOIN(".",,a,b,c,d))
キャリーが必要な例でのイメージ
| 入力 | 解1/解2(末尾だけ+1) | 解4(キャリーあり) |
|---|---|---|
| 192.168.1.254 | 192.168.1.255 | 192.168.1.255 |
| 192.168.1.255 | 192.168.1.256(不正) | 192.168.2.0(正) |
| 10.0.255.255 | 10.0.255.256(不正) | 10.1.0.0(正) |
注意として、解4はTEXTSPLITを使うため、古いExcelでは動きません。また、ExcelでのIPv4扱いを徹底するなら、あわせて入力値の妥当性チェック(0〜255、4オクテット、余計な文字がない等)を用意すると“事故りにくい台帳”になります。
関数の対応状況:どのExcelでどれが使える?
同じ「Excel」でも、環境によって使える関数が違います。特にTEXTBEFORE/TEXTAFTER/TEXTSPLIT/SEQUENCE/LETは、Microsoft 365(または新しい永続ライセンス版)で強みを発揮します。自分の環境に合わせて解法を選ぶのが最短です。
| 解法 | 主に使う関数 | 向いている環境 | キャリー |
|---|---|---|---|
| 解1 | LEFT/FIND/SUBSTITUTE/RIGHT/LEN | 旧環境含め幅広い | × |
| 解2 | TEXTBEFORE/TEXTAFTER/VALUE | Microsoft 365中心 | × |
| 解3 | LET/SEQUENCE/TEXTBEFORE/TEXTAFTER | Microsoft 365中心(動的配列) | 末尾範囲内では不要 |
| 解4 | LET/TEXTSPLIT/QUOTIENT/MOD/TEXTJOIN | Microsoft 365中心 | ○ |
実務でハマりやすいポイントと対策
固定の開始位置でFINDする式が壊れる理由
ネット上では「3つ目のドットをFINDで探す」際に、FIND(".",A1,9)のように検索開始位置(9文字目など)を固定する方法が紹介されることがあります。しかしこれは、IPの桁数が変わると簡単に崩れます。
- 例:1.2.3.4のような短い表記だと、3つ目のドットが9文字目より前に出てしまい、期待通りに見つからない
- 例:100.2.3.4だと逆に後ろにずれて、想定外の位置を拾う
IPアドレスはオクテットごとに桁数が可変なので、「何文字目から」のような固定値に寄せる設計は基本的に避けるのが安全です。解1のように「n回目の区切り」を基準にする式は、この点で汎用性が高くなります。
入力に余計な空白や全角ドットが混ざる
コピー&ペーストや資料転記が混ざる現場だと、末尾に空白が付いたり、全角の「.」が混入したりします。そうなると、見た目は同じでも式が失敗することがあります。対策として、正規化(ノイズ除去)の列を1つ挟むと安定します。
| よくある混入 | 症状 | 対策例 |
|---|---|---|
| 前後の空白 | 分割・検索に失敗 | TRIMで除去 |
| 全角ドット(.) | 「.」として認識されない | SUBSTITUTEで置換 |
| 末尾に/29などCIDRが付く | 最後のオクテットが数字でなくなる | 「/」より前だけを抽出 |
Microsoft 365なら、正規化を一発でやってから解2/解3/解4へ渡す設計が扱いやすいです(列を分けるとレビューもしやすい)。
=LET(x, TRIM(SUBSTITUTE(A1,".",".")), IFERROR(TEXTBEFORE(x,"/"), x))
上の式は、全角ドットを半角に直し、前後空白を取り、もし「/」があればCIDRより前だけを取り出します。以降の式は、この正規化セルを参照するようにすると安定感が上がります。
/29の“使うべき範囲”をExcel上で明示する
払い出し表でよくあるミスが、「ネットワークアドレス」「ブロードキャストアドレス」をうっかりホストとして使ってしまうことです。Excel上では、生成したアドレスに対して種別(ネットワーク/ホスト/ブロードキャスト)も一緒に出しておくとレビューが通りやすくなります。
例えば、解3で8個生成した右側に、同じスピル範囲に合わせてラベルを出すだけでも効果があります。
=CHOOSE({1,2,3,4,5,6,7,8},"Network","Host","Host","Host","Host","Host","Host","Broadcast")
アドレスとラベルを横に並べたい場合は、列をずらして配置するなどレイアウトを工夫してください。台帳は「生成できる」だけでなく「間違いが見つかる」ことが価値になります。
エラーを見える化する(IFERRORで握りつぶさない)
式がエラーになったときに、空欄にしてしまう(IFERRORで””にする)と、間違いが埋もれます。運用では、エラーはエラーとして目立たせるほうが結果的に安全です。どうしても表示を整えたいなら、空欄ではなく「入力不正」などの文字を返すほうが親切です。
=IFERROR(TEXTBEFORE(A1,".",3) & "." & (VALUE(TEXTAFTER(A1,".",3)) + 1), "入力不正")
用途別の選び方(迷ったらここだけ見ればOK)
| よくある用途 | 選ぶべき式 | 理由 |
|---|---|---|
| /29の先頭からホスト1つだけ欲しい | 解2(365)/解1(旧) | 短くて堅牢、意図が明確 |
| /29の一覧を一気に作って払い出しに使う | 解3 | 8個スピルで管理が楽、手作業を減らせる |
| 255を跨ぐ連番IPを作る(検証/移設など) | 解4 | キャリー込みで正しく増える |
| Excelが古くて新関数が使えない | 解1 | 従来関数のみで組める |
まとめ:IPv4は“文字列の分割”か“数値化”で事故を減らす
IPv4アドレスの最後のオクテットをExcelで+1するには、まず「3つ目のドットで前半と後半に分ける」発想が基本です。/29のように範囲が小さいなら、解1・解2の“末尾だけ加算”で十分に実務的。Microsoft 365があるなら、解3で/29を一括生成し、利用可能ホストだけを出すようにすると払い出し事故を減らせます。さらに境界を跨ぐ可能性があるなら、解4の32ビット化でキャリーまで含めて正しく扱うのが最も堅牢です。
最後にもう一度だけ強調すると、台帳運用では「作れる」より「間違いに気づける」が重要です。/29ならネットワークとブロードキャストを除外する、入力ノイズを正規化する、エラーを可視化する——この3点を揃えるだけで、ExcelによるIP管理の品質がぐっと上がります。

コメント