Excelで文字列の一部だけを切り出したいときはないでしょうか。
けど、そんな中で悩むことは、
・区切り文字が入ったコードから必要な部分だけ取り出せない
・元データの文字数がバラバラで、位置を指定するとズレてしまう
ですよね。
今回はそんなお悩みを解決する
についてまとめます!
完成イメージ
文字列の切り出しは、「左から◯文字」「右から◯文字」「何文字目から◯文字」の3つを押さえると、ほとんどの場面に対応できます。
今回は
・LEFT/RIGHT/MID/LEN/SEARCHを使った切り出しと、VBAでの一括処理
をゴールにします。
コードの先頭、末尾の連番、区切りの後ろ…といった取り出しが、数式だけで自在にできるようになります。

上の画像が完成形です。元の文字列から、左・右・途中・区切りの後ろと、それぞれ必要な部分が取り出せています。
なお、区切り文字で切り出すコツと、うまくいかないときの対処法(トラブルシュート)もあわせてご紹介します。
もくじ
STEP1. 元データを用意する
まずは切り出したい文字列の一覧を用意します。
今回は、コード・氏名・住所が混在した10件のデータを用意しました。
A列が元の文字列で、B列〜G列はこれから数式で埋めていきます。
氏名は、このシステムでは「姓-名」の形式で登録されています。
どの行にも区切り文字として「-(ハイフン)」が入っているのがポイントです。

下の表をコピーして、Excelのシートに貼り付けるとそのまま試せます。
| 元の文字列 | LEFT(左から2文字) | RIGHT(右から4文字) | MID(4文字目から4文字) | MID+SEARCH(-の後ろ4文字) | MID+LEN(4文字目から最後) | MID+SEARCH(2つ目の-) |
|---|---|---|---|---|---|---|
| AS-2026-0821 | ||||||
| 山田-太郎 | ||||||
| 東京都新宿区西新宿2-8-1 | ||||||
| BP-2026-0512 | ||||||
| 鈴木-花子 | ||||||
| 大阪府大阪市北区梅田1-1-3 | ||||||
| CD-2026-1003 | ||||||
| 佐藤-健 | ||||||
| 福岡県福岡市博多区博多駅前3-2-1 | ||||||
| DE-2026-0728 |
※ 数式で求める列は空にしています。すでに値が入っている列はそのまま残して試せます。
STEP2. LEFT関数で左から切り出す
まずは、文字列の左端から数文字を取り出してみましょう。
左から切り出すには LEFT関数 を使います。
B2セルを選び、次の数式を入力します。
=LEFT(A2,2)
「A2の文字列の左から2文字」を取り出す、という意味です。
「AS-2026-0821」なら AS が返ります。
あとはB11セルまで下にコピーすれば、全件の左2文字がまとめて取り出せます。
コピーするだけで10件分が一度に終わるのでカンタンですね。

数式はどのセルに入れる?
B2セルを選んで、数式バーに =LEFT(A2,2) と入力するだけです。
実際の入力画面がこちらです。
入力中は引数のヒントが出るので、順番を確認しながら進められます。

STEP3. RIGHT関数で右から切り出す
つぎは、右端から数文字を取り出します。
右から切り出すには RIGHT関数 を使います。
C2セルに次の数式を入力し、C11セルまでコピーします。
=RIGHT(A2,4)
「A2の右から4文字」を取り出す指定です。
「AS-2026-0821」なら末尾の 0821 が返ります。
LEFTが左端、RIGHTが右端と、向きが違うだけなので分かりやすいですね。
STEP4. MID関数で途中から切り出す
つぎは、文字列の途中から取り出します。
途中から切り出すには MID関数 を使います。
MIDは「何文字目から何文字分」と、開始位置と文字数の2つを指定します。
D2セルに次の数式を入力し、D11セルまでコピーします。
=MID(A2,4,4)
「A2の4文字目から4文字分」を取り出す指定です。
「AS-2026-0821」なら4文字目から4文字なので 2026 が返ります。
上の画像では、C列(RIGHT)とD列(MID)が埋まっています。

STEP5. SEARCH関数で区切り文字の後ろを切り出す
ここまでは「何文字目」と位置で指定しました。
ですが、コードの先頭部分の長さが行ごとに違うと、位置指定ではズレてしまいます。
そこで便利なのが、区切り文字(今回は「-」)の位置を調べて切り出す方法です。
区切り文字の位置は SEARCH関数 で調べられます。
E2セルに次の数式を入力し、E11セルまでコピーします。
=MID(A2,SEARCH("-",A2)+1,4)
SEARCH(“-“,A2) で「-」が何文字目かを調べ、その1つ後ろから4文字を取り出しています。
「AS-2026-0821」なら「-」は3文字目なので、4文字目から4文字で 2026 が返ります。
先頭が「AS」でも「ABCD」でも、区切りを目印にするのでズレません。

SEARCH+MIDの数式はどう入れる?
E2セルを選び、数式バーに =MID(A2,SEARCH(“-“,A2)+1,4) と入力します。
実際の入力画面がこちらです。
SEARCHの結果に+1して、区切り文字の次の位置から取り出すのがポイントです。

STEP6. LEN関数と組み合わせて「後ろから全部」を取り出す
「◯文字目から最後まで」のように、文字数が決まっていない部分を取りたいこともあります。
そんなときは LEN関数 で全体の文字数を調べ、それを文字数に使います。
F2セルに次の数式を入力し、F11セルまでコピーします。
=MID(A2,4,LEN(A2))
LEN(A2) はA2の文字数を返します。
「4文字目から、文字数分」と指定すると、結果的に4文字目から最後までを取り出せます。
「AS-2026-0821」なら 2026-0821 が返ります。
文字数を数えなくても、LENに任せれば長さが違っても最後まで取れるのでカンタンですね。

STEP7. 2つ目の区切りを使って切り出す
「AS-2026-0821」のように区切りが2つある場合、2つ目の「-」の後ろだけを取りたいこともあります。
SEARCH関数は、何も指定しないと最初に見つかった位置しか返しません。
2つ目を探すには、SEARCHの3つ目の引数に開始位置を指定します。
G2セルに次の数式を入力し、G11セルまでコピーします。
=IFERROR(MID(A2,SEARCH("-",A2,SEARCH("-",A2)+1)+1,4),"")
内側の SEARCH(“-“,A2)+1 で「1つ目の-の次の位置」を求め、そこから探し直しています。
こうすると2つ目の「-」の位置が分かり、その後ろの 0821 だけを取り出せます。
区切りが1つしかない行はエラーになるため、IFERRORで空欄にしています。

5つの切り出し方の比較
やりたいこと別に、使う数式を表にまとめました。
「どこを基準に取りたいか」で選ぶと迷いません。
| 方法 | 数式・コード | 取り出せるもの | こんなときに |
|---|---|---|---|
| LEFT | =LEFT(A2,2) | 左から2文字 | 先頭の分類コードを取りたい |
| RIGHT | =RIGHT(A2,4) | 右から4文字 | 末尾の連番を取りたい |
| MID | =MID(A2,4,4) | 4文字目から4文字 | 位置で決まる一部分を取りたい |
| SEARCH併用 | =MID(A2,SEARCH(“-“,A2)+1,4) | 区切りの後ろ4文字 | 区切り文字が入ったコードから取りたい |
| VBA | Left/Right/Mid/InStr | まとめて一括処理 | 件数が多いときや定期的な作業に向く |
左端なら LEFT、右端なら RIGHT、途中なら MID が基本です。
位置がバラつくコードは、SEARCHで区切り文字を探すのがいちばん確実。
件数が多く、毎回同じ切り出しをするなら VBA で一括処理するとラクですよ。
VBAでLeft・Right・Mid・InStrを使って一括処理する
件数が多く、毎回同じ切り出しをするなら、VBAで一括処理するのがもっともラクです。
Alt+F11でVBAエディターを開き、標準モジュールに次のコードを貼り付けます。
Sub CutStrings()
Dim r As Long, s As String
For r = 2 To 11
s = Cells(r, 1).Value ' A列の元の文字列
Cells(r, 2).Value = Left(s, 2) ' 左から2文字
Cells(r, 3).Value = Right(s, 4) ' 右から4文字
Cells(r, 4).Value = Mid(s, 4, 4) ' 4文字目から4文字
If InStr(s, "-") > 0 Then ' 「-」の位置を調べる
Cells(r, 5).Value = Mid(s, InStr(s, "-") + 1, 4)
End If
Next r
End Sub
実行すると、B列〜E列が一瞬で埋まります。
VBAの Left・Right・Mid関数 は、ワークシート関数のLEFT・RIGHT・MIDと同じ役割です。
区切り文字の位置は、SEARCHの代わりに InStr関数 で調べます。
「InStr(s, “-“)」はSEARCHと同じ「区切り文字の位置を調べる」役割ですね。
数式を何十行もコピーする手間がなくなるので、決まった切り出しはVBAに任せましょう。
うまくいかないときの対処法(トラブルシュート)
実際に試すと、思ったようにいかないこともあるかもしれません。
よくあるつまずきと対処法をまとめました。
| 症状 | 原因 | 対処 |
|---|---|---|
| 位置がズレて違う文字が取れる | LEFTやMIDは「文字数・位置」で指定するため、桁数が行ごとに違うとズレる | 区切り文字があるなら =MID(A2,SEARCH(“-“,A2)+1,4) にする |
| 全角と半角で数え方が心配 | LENやLEFTは見た目の幅ではなく文字数で数える | 「東」も「A」も1文字。全角・半角とも1文字として数えられる |
| 先頭の「0」が消える | 切り出した結果が数値として扱われる(「0821」→「821」) | セルを文字列にする/=TEXT(MID(…),”0000″) で桁を揃える |
| #VALUE! になる | 区切り文字がその行に無い/MIDの開始位置が0以下になっている | =IFERROR(MID(…),””) で囲む/SEARCHの位置に+1して開始位置を1以上にする |
関数の説明
今回使う5つの関数の概要です。
どれも文字列の切り出しでよく使うので、違いを押さえておきましょう。
LEFT関数(レフト)
| 書式 | =LEFT(文字列, [文字数]) |
|---|---|
| できること | 文字列の左端から指定した文字数分を取り出します。 |
| 戻り値 | 取り出した文字列 |
| こんなときに | 先頭の分類コードなど、左から決まった数だけ取りたいとき。 |
| 注意 | 文字数を省略すると1文字だけ返ります。全角も半角も1文字として数えます。 |
=LEFT(A2,2)
RIGHT関数(ライト)
| 書式 | =RIGHT(文字列, [文字数]) |
|---|---|
| できること | 文字列の右端から指定した文字数分を取り出します。 |
| 戻り値 | 取り出した文字列 |
| こんなときに | 末尾の連番など、右から決まった数だけ取りたいとき。 |
| 注意 | LEFTと左右が逆なだけです。=RIGHT(A2,LEN(A2)-3) とすれば「左3文字の削除」もできます。 |
=RIGHT(A2,4)
MID関数(ミッド)
| 書式 | =MID(文字列, 開始位置, 文字数) |
|---|---|
| できること | 文字列の途中の位置から、指定した文字数分を取り出します。 |
| 戻り値 | 取り出した文字列 |
| こんなときに | 「何文字目から何文字」と位置で指定したいとき。SEARCHと組み合わせると区切り基準でも使えます。 |
| 注意 | 開始位置に0以下を指定すると #VALUE! になります。LEN(A2) を渡すと「最後まで」の意味になります。 |
=MID(A2,4,4)
LEN関数(レン)
| 書式 | =LEN(文字列) |
|---|---|
| できること | 文字列の文字数を数えます。 |
| 戻り値 | 文字数(数値) |
| こんなときに | =MID(A2,4,LEN(A2)) のように、長さが決まっていない部分を「最後まで」取りたいとき。 |
| 注意 | 全角も半角も1文字として数えます。スペースも1文字に含まれます。 |
=MID(A2,4,LEN(A2))
SEARCH関数(サーチ)
| 書式 | =SEARCH(検索文字列, 対象文字列, [開始位置]) |
|---|---|
| できること | 指定した文字が何文字目にあるかを返します。 |
| 戻り値 | 位置(数値) |
| こんなときに | 「-」などの区切り文字の位置を知りたいとき。開始位置を指定すると2つ目以降も探せます。 |
| 注意 | 大文字と小文字を区別しません。見つからないと #VALUE! になります。似たFIND関数は区別します。 |
=MID(A2,SEARCH("-",A2)+1,4)
完成
元の文字列から、左・右・途中・区切りの後ろ…と、必要な部分をきれいに取り出せました。
思ったとおりに動きましたか?
B列〜G列はすべて数式なので、元の文字列を書き換えれば結果も自動で変わります。
手作業での切り貼りから卒業すると、データ整理がぐっとラクになります。

さいごに
いかがでしょうか。
今回は、
についてまとめました。
ポイントは、左端はLEFT、右端はRIGHT、途中はMIDの3つを基本にすることです。
区切り文字があるコードは、SEARCHと組み合わせるとズレずに取り出せます。
件数が多いときは、VBAのLeft・Right・Mid・InStrで一括処理するのがおすすめです。
まずは今回のサンプル表で、ぜひ一度試してみてください。
また、他にも便利なExcelの時短テクニックがありますので、よろしければご参照頂ければと思います。
ぜひ試してみてください。













コメントを残す