【Excel】エクセルで右から1文字を削除する方法
エクセルで文字列の右端にある1文字だけを削除したい場面は、商品コードの末尾記号を外したいときや、住所・管理番号の不要な文字を整えたいときに頻繁にあります。
手入力で修正すると件数が多いほどミスが増えるため、関数、フラッシュフィル、置換、VBAなど、データ量と作業目的に合う方法を選ぶことが大切です。
この記事では、右から1文字を削除するための数式と操作手順を、サンプルデータを使って詳しく確認していきます。
右端の1文字を削除する基本式は、LEFT関数とLEN関数の組み合わせです。
文字列の長さから1を引き、残った文字数だけ左側から取り出します。
数式は LEFT 関数と LEN 関数を使います。
エクセルで右から1文字を削除する方法1【LEFT関数とLEN関数】
それではまず、数式で右から1文字を削除する基本の方法について解説していきます。
| A列 元データ | B列 右端を削除した結果 |
|---|---|
| ABC-123X | ABC-123 |
| 東京営業所A | 東京営業所 |
| 商品001Z | 商品001 |
基本数式の入力
右から1文字を除いた文字列をB2セルに表示するには、B2セルへ数式を入力します。
=LEFT(A2,LEN(A2)-1)
この数式では、LEN関数でA2セル内の文字数を数え、その数から1を引いた分だけLEFT関数で左側の文字を抜き出します。
元の文字数が毎行異なっていても、LEN関数が自動で長さを判定するため、同じ数式を使える点が大きなメリットです。

たとえばA2がABC-123Xなら文字数は8文字であり、LEFT関数は左から7文字を取得します。
結果として、末尾のXだけが除かれたABC-123がB2セルに返されます。
数式を入力した後は、Enterキーを押して結果が想定どおりか確認しましょう。
数式のオートフィル
データが複数行ある場合は、B2セルの数式を下の行へコピーします。
B2セルを選択し、セル右下に表示される小さな四角形のフィルハンドルへマウスポインターを合わせます。
黒い十字の形になったら、データの最終行までドラッグするか、フィルハンドルをダブルクリックします。

ダブルクリックでは、隣接するA列の連続データを目安にして数式が自動コピーされます。
1行目を見出しにした表では、数式は通常B2セルから開始します。
数式をコピーすると、A2はA3、A4というように行番号が自動調整されます。
元データを更新した場合にも計算結果が連動して変わるため、作業途中で内容が変わる一覧にも向く方法です。
数式結果を値に変換する操作
関数で作成した結果を固定したい場合は、B列を値として貼り付けます。
まず、数式が入ったB2セルから最終セルまでを選択し、コピーします。
同じ範囲を右クリックして貼り付けのオプションから値を選ぶと、数式ではなく文字列そのものが残ります。
値貼り付け後は、A列の元データを変更してもB列の結果は変わりません。
納品用データや他システムへ取り込むCSVを作る前には、値へ変換しておくと意図しない再計算を防ぎやすくなります。
【操作のポイント】数式を残すか値に固定するかは、元データが今後も更新されるかどうかで決めます。
右端にある特定文字だけを削除する条件付き数式
続いては、末尾の文字が特定の記号やアルファベットの場合だけ削除する方法を確認していきます。
| A列 元データ | B列 判定後の結果 |
|---|---|
| 注文-100X | 注文-100 |
| 注文-200 | 注文-200 |
| 注文-300X | 注文-300 |
RIGHT関数で末尾を判定する式
すべてのセルから1文字を消すのではなく、右端がXの場合だけ削除したいケースがあります。
この場合は、RIGHT関数とIF関数を組み合わせます。
=IF(RIGHT(A2,1)=”X”,LEFT(A2,LEN(A2)-1),A2)
RIGHT(A2,1)は、A2セルの右端から1文字を取得する式です。
その結果がXならLEFT関数で末尾を削除し、XではないならA2の内容をそのまま表示します。
条件に合わないデータまで短くしてしまわないため、混在した一覧ではこの判定式が有効です。

全角文字、半角英数字、記号は、ExcelのLEN関数では原則として各1文字として数えられます。
ただし、セル末尾に見えない空白が含まれていると、判定結果が想定と異なる場合があります。
末尾のハイフンや空白を扱う式
データの末尾にハイフン、スラッシュ、空白などが付いている場合も、基本の考え方は同じです。
たとえば末尾がハイフンの場合だけ削除するには、Xの部分をハイフンへ置き換えます。
=IF(RIGHT(A2,1)=”-“,LEFT(A2,LEN(A2)-1),A2)
末尾に半角スペースがあるか調べるときは、比較する文字に半角スペースを指定します。
見た目では空白に気付きにくいため、数式バーで実際の文字列を確認する習慣が重要です。

不要な空白が文字列の途中にも含まれる場合は、TRIM関数による整形を先に検討します。
ただし、TRIM関数は複数の連続スペースを1つへまとめるため、意図的な空白を含むデータでは扱いに注意が必要です。
空白セルと1文字セルへの対策
元データが空白、または1文字だけのセルでは、単純なLEFT関数の式が空文字を返します。
通常は問題ありませんが、データの欠損を区別したいときにはIF関数を追加します。
=IF(A2=””,””,IF(LEN(A2)>1,LEFT(A2,LEN(A2)-1),””))
この式はA2が空欄なら空欄を返し、2文字以上なら末尾を削除し、1文字だけなら空欄を返します。
処理後に空欄が増える可能性があるため、データを絞り込む前に件数を確認しておくと安心です。
【操作のポイント】特定の末尾文字だけを削除する場合は、RIGHT関数による判定を先に入れます。
フラッシュフィルで右端を削除する操作
続いては、数式を使わず、入力例から規則を読み取らせるフラッシュフィルの操作を確認していきます。
| A列 元データ | B列 入力する例 |
|---|---|
| 管理番号-01A | 管理番号-01 |
| 管理番号-02B | |
| 管理番号-03C |
見本データの入力
フラッシュフィルを使うときは、まずB2セルに削除後の完成形を手入力します。
A2が管理番号-01Aなら、B2には管理番号-01と入力します。
ここで入力する見本が曖昧だと、Excelが別の規則として判断することがあります。
右端だけを外した結果を正確に1件入力することが、フラッシュフィルを成功させる第一歩です。
日本語やハイフンを含む文字列でも、規則が明確なら候補を作成できる場合があります。
CtrlキーとEキーによる実行
B3セルを選択した状態で、CtrlキーとEキーを同時に押すとフラッシュフィルが実行されます。
候補が表示されたら、内容を確認してEnterキーで確定します。
フラッシュフィルの結果は数式ではなく値として入力されるため、元データを変えても自動更新されません。
規則が認識されない場合の調整
候補が期待どおりにならない場合は、B2とB3の2行に完成例を入力してから、B4セルでCtrlキーとEキーを押します。
たとえば末尾がA、B、Cのように異なる文字なら、複数例を示すことで右端を削除する規則が伝わりやすくなります。
フラッシュフィルが利用できない環境や、結果が不安定なデータでは、LEFT関数とLEN関数を使う方法へ戻るのが確実です。
【操作のポイント】フラッシュフィルは少量の整形に便利ですが、更新される表には関数を使うほうが管理しやすい方法です。
置換機能で末尾の文字を削除する注意点
続いては、置換機能を使う場合の使いどころと注意点を確認していきます。
| A列 元データ | 目的 |
|---|---|
| A-101X | 末尾のXを削除 |
| B-202X | 末尾のXを削除 |
置換が向くデータ
置換機能は、削除したい文字が末尾だけでなく文字列内のどこにあっても問題ない場合に便利です。
CtrlキーとHキーを押し、検索する文字列にXを入力し、置換後の文字列を空欄にして実行します。
ただし、この操作はセルの途中にあるXもすべて削除します。
右端だけを削除する目的なら、置換機能だけでは条件を指定できないため注意が必要です。
作業前に対象範囲を選択し、必要ならファイルのコピーを保存してから実行しましょう。
ワイルドカード使用時の注意
Excelの置換では、アスタリスクや疑問符がワイルドカードとして扱われることがあります。
しかし、末尾の1文字だけを安全に選んで削除する用途では、ワイルドカードによる置換は想定外の範囲まで変えるおそれがあります。
文字列の長さが異なるデータでは、関数を使うほうが処理内容を確認しやすいでしょう。
一括置換は便利ですが、処理前後の件数と代表データを必ず見比べることが欠かせません。
元データを残す作業手順
置換で元データを直接変更したくないときは、まず対象列を別の列へコピーします。
コピーした列だけを選択して置換すれば、A列の原本を残したまま結果を作れます。
作業結果を確認した後に不要な列を整理すると、誤操作が起きた場合にも元へ戻しやすくなります。
【操作のポイント】置換は文字の位置を区別しないため、右端限定の削除には関数またはフラッシュフィルを優先します。
VBAで右端の1文字を削除する自動処理
続いては、繰り返し発生する整形作業をVBAで自動化する方法を確認していきます。
| A列 元データ | B列 マクロ処理後 |
|---|---|
| 伝票001A | 伝票001 |
| 伝票002B | 伝票002 |
マクロの基本コード
A列の2行目から最終行までを対象にして、結果をB列へ出力するVBAの例です。
|
1 2 3 4 5 6 7 8 9 10 11 12 |
Sub RemoveLastCharacter() Dim lastRow As Long Dim i As Long lastRow = Cells(Rows.Count, "A").End(xlUp).Row For i = 2 To lastRow If Len(Cells(i, "A").Value) > 0 Then Cells(i, "B").Value = Left(Cells(i, "A").Value, Len(Cells(i, "A").Value) - 1) End If Next i End Sub |
このコードでは、A列の最終データ行を取得し、2行目から順に文字数を調べて末尾の1文字を除いた値をB列へ書き込みます。
1行目をヘッダーとして扱うため、繰り返し処理は2行目から開始しています。
VBAコードの実行前確認
VBAを実行する前に、対象のシート、入力列、出力列がコードの内容と一致しているか確認します。
この例ではA列が元データ、B列が結果の出力先です。
B列に既存データがある場合、マクロ実行によって上書きされる可能性があります。
重要なファイルは複製してからマクロを試すと、誤った上書きを防ぎやすくなります。
特定文字だけを削除するコード
右端がXのときだけ削除したい場合は、条件文を追加します。
|
1 2 3 4 5 |
If Right(Cells(i, "A").Value, 1) = "X" Then Cells(i, "B").Value = Left(Cells(i, "A").Value, Len(Cells(i, "A").Value) - 1) Else Cells(i, "B").Value = Cells(i, "A").Value End If |
この処理では、末尾がX以外のセルは変更せず、そのままB列へ表示されます。
定期的に同じ加工を行うなら、関数をコピーするよりも手順を統一しやすい自動化です。
【操作のポイント】VBAは大量データや反復作業に有効ですが、対象列と上書き範囲を明確にしてから実行します。
まとめ エクセルで右から1文字を削除する方法
エクセルで右から1文字を削除する最も基本的な方法は、LEFT関数とLEN関数を組み合わせる数式です。
=LEFT(A2,LEN(A2)-1)
元データが更新されても結果を連動させたい場合は、関数による処理が適しています。
末尾が特定の文字のときだけ削除したいなら、RIGHT関数とIF関数を加えて条件を設定します。
一度だけ整形する少量データではフラッシュフィルも便利ですが、結果が値として固定される点を理解して使いましょう。
置換機能は途中の文字まで消すおそれがあり、右端だけを対象にしたい用途では慎重な確認が必要です。
大量の一覧を繰り返し加工する業務では、VBAによる自動処理も選択肢になります。
データの性質と更新頻度に合った方法を選び、右端の不要な1文字を正確に削除していきましょう。