Excelで作業をしていると、既存のデータの文字順序を変更したい場面が頻繁に訪れます。
姓名の順序を「山田太郎」から「太郎 山田」に入れ替えたい、商品コードの前後を逆にしたい、住所の市区町村と番地の順序を変更したいなど、大量のセルに対して文字の順序を入れ替える作業を手作業で行うと、膨大な時間がかかってしまいます。
一つずつセルを編集していては効率が悪く、入力ミスのリスクも高まります。データ件数が数百、数千となれば、手作業での対応は現実的ではありません。
Excelには文字を入れ替える方法が複数用意されています。
関数を使った入れ替え、区切り位置機能による分割と結合、フラッシュフィルによるパターン認識など、それぞれに特徴があり、状況に応じて最適な方法が異なります。
本記事では、セル内の文字を前後左右に入れ替える様々な方法を詳しく解説し、一括処理のテクニックや使い分けのポイントを紹介します。
データ整形作業を効率化したい方は、ぜひ最後までお読みください。
ポイントは
・関数を使えば文字列の前後を自由に入れ替えられる
・区切り位置機能で姓名や住所を分割してから並び替え可能
・フラッシュフィルならパターンを認識して自動入れ替え
です。
それでは詳しく見ていきましょう。
関数を使って文字列の前後を入れ替える基本
それではまず、最も確実で応用範囲の広い関数を使った文字入れ替えの方法を確認していきます。
区切り文字がある場合の前後入れ替え
文字列にスペースやカンマなどの区切り文字が含まれている場合、LEFT関数、RIGHT関数、FIND関数を組み合わせて前後を入れ替えることができます。
例えば、A1セルに「山田 太郎」とスペースで区切られた姓名が入っている場合、姓と名を入れ替えて「太郎 山田」にする方法を考えます。まずFIND関数でスペースの位置を特定し、その位置を基準にLEFT関数で姓を、RIGHT関数で名を取り出します。
具体的な数式は「=RIGHT(A1,LEN(A1)-FIND(” “,A1))&” “&LEFT(A1,FIND(” “,A1)-1)」となります。この数式は、まずRIGHT関数でスペースより後ろ(名)を取り出し、スペースを追加し、LEFT関数でスペースより前(姓)を取り出して結合しています。
文字列入れ替えの基本イメージ
元のデータ
姓 名
入れ替え後
名 姓
数式の仕組みを詳しく説明すると、「FIND(” “,A1)」でスペースの位置を取得します。A1に「山田 太郎」が入っている場合、スペースは3文字目にあるため「3」が返されます。「LEFT(A1,FIND(” “,A1)-1)」で左から2文字(3-1=2)の「山田」が取得され、「RIGHT(A1,LEN(A1)-FIND(” “,A1))」で全体の長さからスペースの位置を引いた残りの文字数分、右から「太郎」が取得されます。
| A列(元データ) | 数式(B列) | 結果 |
|---|---|---|
| 山田 太郎 | =RIGHT(A1,LEN(A1)-FIND(” “,A1))&” “&LEFT(A1,FIND(” “,A1)-1) | 太郎 山田 |
| 佐藤 花子 | =RIGHT(A2,LEN(A2)-FIND(” “,A2))&” “&LEFT(A2,FIND(” “,A2)-1) | 花子 佐藤 |
| 鈴木 一郎 | =RIGHT(A3,LEN(A3)-FIND(” “,A3))&” “&LEFT(A3,FIND(” “,A3)-1) | 一郎 鈴木 |
| 田中 美咲 | =RIGHT(A4,LEN(A4)-FIND(” “,A4))&” “&LEFT(A4,FIND(” “,A4)-1) | 美咲 田中 |

区切り文字がカンマの場合も同様の考え方で対応できます。「商品A,商品B」を「商品B,商品A」に入れ替える場合、数式のスペース部分をカンマに変更するだけです。
「=RIGHT(A1,LEN(A1)-FIND(“,”,A1))&”,″&LEFT(A1,FIND(“,”,A1)-1)」という形になります。
区切り文字がない場合の文字数指定入れ替え
区切り文字がなく、固定の文字数で前後を入れ替えたい場合は、LEFT関数とRIGHT関数で直接文字数を指定します。
例えば、A1セルに「AB12345」という7文字のコードが入っていて、前2文字と後ろ5文字を入れ替えて「12345AB」にしたい場合、B1セルに「=RIGHT(A1,5)&LEFT(A1,2)」と入力します。RIGHT関数で右から5文字を取得し、LEFT関数で左から2文字を取得して結合します。
文字数指定による入れ替え
LEFT関数で
前部分を取得
RIGHT関数で
後部分を取得
逆順で結合して
入れ替え完了
3つ以上の部分を入れ替える場合も、MID関数を追加して対応できます。
「ABC-123-XYZ」を「XYZ-123-ABC」のように、最初と最後を入れ替えて中央はそのままにする場合、「=RIGHT(A1,3)&MID(A1,4,4)&LEFT(A1,3)」という数式になります。
RIGHT関数で最後の3文字「XYZ」、MID関数で4文字目から4文字分「-123-」、LEFT関数で最初の3文字「ABC」を取得して、順番を変えて結合します。
| A列(元データ) | 入れ替えパターン | 数式 | 結果 |
|---|---|---|---|
| AB12345 | 前2文字と後5文字 | =RIGHT(A1,5)&LEFT(A1,2) | 12345AB |
| XYZ999 | 前3文字と後3文字 | =RIGHT(A1,3)&LEFT(A1,3) | 999XYZ |
| ABC-123-XYZ | 両端入れ替え中央維持 | =RIGHT(A1,3)&MID(A1,4,4)&LEFT(A1,3) | XYZ-123-ABC |
| 東京都渋谷区 | 前3文字と後3文字 | =RIGHT(A1,3)&LEFT(A1,3) | 渋谷区東京都 |
複数の区切り文字がある場合の入れ替え
文字列に複数の区切り文字が含まれていて、その間の要素を入れ替えたい場合は、SUBSTITUTE関数を使って特定の区切り文字の位置を特定します。
例えば、「営業部/第二課/山田太郎」というデータがあり、「山田太郎/第二課/営業部」のように最初と最後を入れ替えたい場合を考えます。この場合、最初の「/」と2番目の「/」の位置をそれぞれ特定する必要があります。
最初の「/」の位置は「FIND(“/”,A1)」で取得できますが、2番目の「/」の位置は少し工夫が必要です。「FIND(“/”,A1,FIND(“/”,A1)+1)」とすることで、最初の「/」の次の位置から検索を開始し、2番目の「/」の位置を取得できます。
これらの位置情報を使って、各部分を切り出して並び替えます。数式は複雑になりますが、「=MID(A1,FIND(“/”,A1,FIND(“/”,A1)+1)+1,LEN(A1))&”/”&MID(A1,FIND(“/”,A1)+1,FIND(“/”,A1,FIND(“/”,A1)+1)-FIND(“/”,A1)-1)&”/”&LEFT(A1,FIND(“/”,A1)-1)」という形になります。
| 元データ | 入れ替え内容 | 結果 |
|---|---|---|
| 営業部/第二課/山田太郎 | 最初と最後を入れ替え | 山田太郎/第二課/営業部 |
| 東京都/渋谷区/1-2-3 | 最初と最後を入れ替え | 1-2-3/渋谷区/東京都 |
| A/B/C/D | 4要素の順序変更 | D/C/B/A(関数の組み合わせ) |

関数を使った文字の入れ替えは、元のデータを保持したまま新しい列に結果を表示できるメリットがあります。
元データに誤りがあった場合でも、数式を修正すれば自動的に反映されるため、データの管理がしやすくなります。
ただし、数式が複雑になると、後から見たときに理解しづらくなる可能性があります。
そのため、隣のセルにメモを残しておくか、数式にコメントを付けておくことをおすすめします。
また、数式の結果を値として固定したい場合は、「コピー→値として貼り付け」を行うことで、数式を値に変換できます。
大量のデータで複雑な数式を使用すると、ファイルサイズが大きくなり、動作が遅くなることもあるため、処理後は値に変換することを検討しましょう。
区切り位置とTEXTSPLIT関数で分割してから入れ替え
続いては、文字列を一度分割してから並び替える方法を確認していきます。
区切り位置機能を使った分割手順
姓名や住所などを分割してから入れ替える場合、「区切り位置」機能を使うと視覚的に分かりやすく処理できます。
まず、分割したいセルの範囲を選択します。次に「データ」タブの「区切り位置」ボタンをクリックすると、「区切り位置指定ウィザード」が起動します。
ステップ1では「カンマやタブなどの区切り文字によってフィールドごとに区切られたデータ」を選択します。ステップ2では、データに応じた区切り文字を選択します。スペースで区切られている場合は「スペース」にチェックを入れ、カンマの場合は「カンマ」、その他の記号の場合は「その他」にチェックを入れて該当する記号を入力します。
区切り位置機能の使用手順
対象セル選択
→「データ」タブ
「区切り位置」
→区切り文字指定
プレビュー確認
→完了で分割
ステップ3では、分割後の各列のデータ形式を指定できますが、通常は「標準」のままで問題ありません。「完了」をクリックすると、選択したセルの右側に分割されたデータが展開されます。
例えば、A列に「山田 太郎」というデータがあり、スペースで区切り位置を実行すると、A列に「山田」、B列に「太郎」が分割されます。分割後、C列に「=B1&” “&A1」という数式を入力すれば、「太郎 山田」と入れ替えた結果が得られます。
| 処理前(A列) | 分割後(A列) | 分割後(B列) | 入れ替え(C列) |
|---|---|---|---|
| 山田 太郎 | 山田 | 太郎 | =B1&” “&A1 → 太郎 山田 |
| 佐藤 花子 | 佐藤 | 花子 | =B2&” “&A2 → 花子 佐藤 |
| 鈴木 一郎 | 鈴木 | 一郎 | =B3&” “&A3 → 一郎 鈴木 |
| 田中 美咲 | 田中 | 美咲 | =B4&” “&A4 → 美咲 田中 |
TEXTSPLIT関数による最新の分割方法
Excel 365やExcel 2021以降では、TEXTSPLIT関数を使って文字列を分割できます。
TEXTSPLIT関数は「=TEXTSPLIT(対象文字列,列区切り文字,行区切り文字)」という構文で、指定した区切り文字で文字列を分割し、複数のセルに自動的に展開します。
例えば、A1セルに「山田 太郎」が入っている場合、B1セルに「=TEXTSPLIT(A1,” “)」と入力すると、B1に「山田」、C1に「太郎」が自動的に展開されます。この機能はスピル機能と呼ばれ、数式を入力したセル以外にも自動的に結果が展開されます。
TEXTSPLIT関数の動作イメージ
元データ
分割後
分割後、INDEX関数を使って要素の順序を入れ替えることもできます。「=INDEX(TEXTSPLIT(A1,” “),2)&” “&INDEX(TEXTSPLIT(A1,” “),1)」とすれば、2番目の要素(名)と1番目の要素(姓)を入れ替えて結合できます。


ただし、TEXTSPLIT関数は比較的新しい関数のため、古いバージョンのExcelでは使用できません。Excel 2019以前のバージョンや、Macの一部バージョンでは動作しないため、互換性が必要な場合は区切り位置機能や従来の関数を使用する必要があります。
| 方法 | 対応バージョン | メリット | デメリット |
|---|---|---|---|
| 区切り位置 | 全バージョン | 視覚的に分かりやすい | 元データが上書きされる |
| TEXTSPLIT関数 | 365、2021以降 | 自動展開、数式で管理 | 古いバージョン非対応 |
| 従来の関数 | 全バージョン | 互換性が高い | 数式が複雑 |
分割後に並び替えて結合する流れ
分割した要素を入れ替えて再度結合する際は、TEXTJOIN関数やCONCAT関数を使うと効率的です。
例えば、A列に「山田」、B列に「太郎」、C列に「様」が分割されている状態で、「太郎 山田 様」という順序で結合したい場合、D列に「=TEXTJOIN(” “,TRUE,B1,A1,C1)」と入力します。TEXTJOIN関数は指定した区切り文字で複数のセルを結合する関数で、第2引数にTRUEを指定すると空白セルを無視します。
CONCAT関数を使う場合は、「=B1&” “&A1&” “&C1」という形で&演算子と組み合わせて記述します。TEXTJOIN関数の方が区切り文字を一度指定すればよいため、複数の要素を結合する場合は便利です。
区切り位置機能を使った分割は、元のデータが上書きされてしまう点に注意が必要です。
必ず元データのバックアップを取るか、別の列にコピーしてから実行しましょう。
また、区切り位置を実行すると、分割されたデータが右側のセルに展開されるため、右側に既にデータがある場合は上書きされてしまいます。
事前に右側のセルが空いていることを確認してから実行してください。
TEXTSPLIT関数を使う場合も、スピル機能により右側や下側のセルに自動展開されるため、展開先のセルが空いている必要があります。
「#SPILL!」エラーが表示された場合は、展開先のセルにデータが入っているため、セルをクリアするか別の場所に移動してから再度実行してください。
フラッシュフィルとその他の便利な入れ替えテクニック
続いては、より直感的で手軽な入れ替え方法を確認していきます。
フラッシュフィルでパターン認識させる
Excel 2013以降では、フラッシュフィル機能を使って、パターンを自動認識して文字を入れ替えることができます。
この機能は、ユーザーが1つか2つの例を入力すると、そのパターンを学習して残りのセルに自動的に適用してくれます。
例えば、A列に「山田 太郎」「佐藤 花子」「鈴木 一郎」という姓名のリストがあるとします。B1セルに手動で「太郎 山田」と入力します。次にB2セルを選択して「データ」タブの「フラッシュフィル」ボタンをクリックするか、Ctrl+Eキーを押すと、パターンを認識して「花子 佐藤」「一郎 鈴木」と自動的に入力されます。
フラッシュフィルによる入れ替え手順
隣の列に
例を1~2個入力
次のセルを選択
Ctrl+E押下
パターンを認識し
自動入れ替え
フラッシュフィルは非常に便利ですが、パターンが複雑すぎると正しく認識されないことがあります。その場合は、もう1つか2つ例を追加して入力すると、認識精度が向上します。姓名の入れ替えのような単純なパターンなら、1つの例で十分認識されます。
| A列(元データ) | B列(手入力例) | フラッシュフィル結果 |
|---|---|---|
| 山田 太郎 | 太郎 山田 | (手入力) |
| 佐藤 花子 | 花子 佐藤(自動) | |
| 鈴木 一郎 | 一郎 鈴木(自動) | |
| 田中 美咲 | 美咲 田中(自動) |
置換機能を活用した部分的な入れ替え
文字列の一部だけを入れ替えたい場合、置換機能を組み合わせることで対応できます。
例えば、「東京都-渋谷区」を「渋谷区-東京都」に入れ替えたい場合、一度「東京都」を仮の文字列「###」に置換し、次に「渋谷区」を「東京都」に置換し、最後に「###」を「渋谷区」に置換するという手順を踏みます。
具体的には、Ctrl+Hキーで置換ダイアログを開き、「検索する文字列」に「東京都」、「置換後の文字列」に「###」と入力して「すべて置換」を実行します。次に「検索する文字列」を「渋谷区」、「置換後の文字列」を「東京都」にして置換します。最後に「検索する文字列」を「###」、「置換後の文字列」を「渋谷区」にして置換すれば完了です。
置換による入れ替えの3ステップ
ステップ1
ステップ2
ステップ3
この方法は、元のデータを直接書き換えるため、必ず事前にバックアップを取ってから実行してください。また、仮の文字列として使用する「###」のような記号は、元のデータに含まれていない文字列を選ぶことが重要です。
VBAマクロによる自動化
大量のデータに対して複雑な入れ替えを繰り返し実行する場合、VBAマクロを作成して自動化することも検討できます。
例えば、姓名の入れ替えを自動化するVBAマクロは以下のようになります。Alt+F11キーでVBAエディタを開き、「挿入」→「標準モジュール」を選択してから、以下のコードを入力します。
| 方法 | 難易度 | 適した場面 |
|---|---|---|
| 関数による入れ替え | 中 | 元データを保持したい場合 |
| 区切り位置 | 低 | 視覚的に分かりやすく処理したい |
| フラッシュフィル | 低 | 簡単なパターンの入れ替え |
| 置換機能 | 中 | 元データを直接書き換える場合 |
| VBAマクロ | 高 | 繰り返し実行する複雑な処理 |
フラッシュフィルは非常に便利な機能ですが、パターン認識に依存するため、必ずしも正確な結果が得られるとは限りません。
実行後は必ず結果を確認し、意図した通りに入れ替えられているかチェックしましょう。
特に大量のデータを処理する場合は、最初の数行で結果を確認してから、全体に適用することをおすすめします。
置換機能を使った入れ替えは、手順を間違えると元に戻せなくなる可能性があるため、必ず作業前にシートをコピーしてバックアップを作成してください。
また、置換の手順をメモしておくと、同じ作業を再度行う際に役立ちます。
VBAマクロを使用する場合は、マクロを含むファイルは「.xlsm」形式で保存する必要があります。
また、他の人とファイルを共有する場合は、マクロのセキュリティ設定により実行できない可能性があるため、関数を使った方法の方が互換性が高い場合もあります。
まとめ エクセルで文字を入れ替え(関数:前後:左右など)する方法
エクセルで文字を入れ替える方法をまとめると
・関数による入れ替え:LEFT・RIGHT・FIND関数の組み合わせで区切り文字を基準に前後を入れ替え、「=RIGHT(A1,LEN(A1)-FIND(” “,A1))&” “&LEFT(A1,FIND(” “,A1)-1)」で姓名の順序を逆転、文字数が固定の場合は直接指定も可能
・区切り位置とTEXTSPLIT関数:「データ」タブの「区切り位置」で文字列を分割してから並び替え、Excel 365以降なら「=TEXTSPLIT(A1,” “)」で自動分割、分割後はTEXTJOIN関数や&演算子で結合
・フラッシュフィルによる自動認識:例を1~2個入力してCtrl+Eでパターンを学習して自動入れ替え、単純なパターンなら高精度で認識
・置換機能の活用:仮の文字列を使った3ステップ置換で前後を入れ替え、元データを直接書き換えるため要バックアップ
これらの方法にはそれぞれメリットがあり、状況に応じた使い分けが重要です。
元データを保持したい場合は関数、視覚的に分かりやすく処理したい場合は区切り位置、簡単なパターンならフラッシュフィル、元データを直接書き換えてもよい場合は置換機能が適しています。
ただし、大量のデータを処理する際は注意が必要です。
処理前に必ずバックアップを取り、小規模なテストを行ってから本番のデータに適用することで、トラブルを未然に防げます。
Excelの文字入れ替えテクニックを適切に活用して、データ整形作業の効率化を実現していきましょう!