
Excelのセル内文字の並び替えについて質問があります。
セル内に名前のデータがカンマで区切られて入ってくるのですが、順番を変えたいのですが、どのような数式を使えばいいかご教示いただけませんか?
A1のデータをB1に変更できる数式はありますか?
A1=Last Name,First Name,Title
B1=Title First Name Last Name
※A1ではLast Name First Name Titleの間にはカンマ(,)がありそれぞれの間にスペースはありません。
※B1では、可能であればそれぞれの間にスペースを入れたいです。
(例)
A1=Nihon,Hanako,Ms.
B1=Ms. Hanako Nihon
複数の処理するので、できれば数式をコピーしただけで出来るようにしたいのですが、どなたか教えてくださいませんか?
宜しくお願い致します。
No.2ベストアンサー
- 回答日時:
こんばんは!
手っ取り早くVBAでの一例です。
データはA列1行目からあるとします。
Sub Sample1()
Dim i As Long, k As Long
Dim myStr As String, myAry
For i = 1 To Cells(Rows.Count, "A").End(xlUp).Row
myAry = Split(Cells(i, "A"), ",")
For k = UBound(myAry) To 0 Step -1
myStr = myStr & myAry(k) & " "
Next k
Cells(i, "B") = myStr
myStr = ""
Next i
End Sub
※ 関数で出来るかどうか判りませんが、
考える気力がないのでVBAにしてみました。
どうしても関数でやりたい!という場合は、この質問限定の関数(ユーザー定義関数)を作成すれば
通常のワークシート関数と同じ使い方ができます。m(_ _)m
質問からすぐに回答をいただき、ありがとうございました。
昨晩お礼を書いたのが、うまく反映されておらずすみません。
こちらのVBAで出来ました。本当にありがとうございます。
No.6
- 回答日時:
こんばんは。
補助列を用意します。
ここでは、C~Eまでです。
A1 :Nihon,Hanako,Ms.
B1:=C1&" "&D1&" "&E1
================
C1
=MID(A1,FIND("!",SUBSTITUTE(A1,",","!",2))+1,20)
D1:
=SUBSTITUTE(MID(A1,FIND("!",SUBSTITUTE(A1,",","!",1))+1,20),","&C1,"")
E1:
=SUBSTITUTE(A1,","&D1&","&C1,"")
------------
VBAの正規表現を使った場合
'//標準モジュールに登録
Public Function ReOrderName(ByVal oName)
Dim RegEx As Object
Dim Ms
Dim buf As String
Set RegEx = CreateObject("VBScript.RegExp")
With RegEx
'.Global = True: .IgnoreCase = False: .MultiLine = True
.Pattern = "(\w+),(\w+),([\w\.]+)"
Set Ms = .Execute(oName)
With Ms(0)
buf = .subMatches(2) & " " & .subMatches(1) & " " & .subMatches(0)
End With
End With
ReOrderName = buf
End Function
ワークシートでは、以下のように普通の関数と同じようにします。
=ReOrderName(A1)
遅い時間にも関わらず、回答いただきありがとうございました。
教えていただいた関数でうまく出せました。
VBAの方は、まだ標準モジュールに登録できてないので、また明日トライしてみます!
ありがとうございました。
No.5
- 回答日時:
[No.3]用の添付図です。

No.4
- 回答日時:
簡単にできる方法(おそらく)を紹介します。
変換前のデータはA列(A1~Axxセル)にあり、カンマで区切られた文字列は3個であり、B列以降は空白であるとします。
◆手順
1.A列を選択
2.メニュー → データ → 区切り位置
3.『カンマやタブなどの区切り文字に・・・』を選択して『次へ』をクリック
4.『カンマ』のみにチェックを入れて『完了』をクリック
5.D1セルに『=concatenate(C1," ",B1," ",A1)』と入力する
6.手順5で入力した式を下方向のデータ最下行までコピペ
7.完成
PS
・『区切り位置』はコンマ等の文字で区切られた文字列を分離する機能です。B列、C列にデータがあった場合、分離された文字列で上書きされます。
・手順5はD1セルである必要は特にありません。適切な場所においてください。
・concatenateは文字列を結合する関数です。ここでは分離した文字列をスペースを結合しています。
昨晩は回答をいただいたのに気が付きませんでしたが、遅い時間に回答をいただきありがとうございます。
こちらでもできました。
また、PSで区切り位置やconcatenateのご説明をいただき大変助かりました。
今まで使ったことのない関数でしたので、勉強になりました。今後活用させていただきます。
ありがとうございました。
No.3
- 回答日時:
1.「セル内に名前のデータがカンマで区切られて入ってくる」データを
 ̄ ̄Sheet2 に読み込む
2.[データ] ⇒ [区切り位置] で列A、B、C に分ける
3.Sheet1 において、
 ̄ ̄次式 を入力したセル A1 を下方にズズーッとオートフィル
 ̄ ̄ =INDEX(Sheet2!A1:C1,3)&" "&INDEX(Sheet2!A1:C1,2)&" "&INDEX(Sheet2!A1:C1,1)&""
私、何か勘違いしてますか?
遅い時間に回答をしてくださり、ありがとうございます。
こちらでも望み通りの結果を得ることができ大変助かりました。
区切り位置やINDEXを知らなかったので、大変勉強になりました。
ありがとうございます。
No.1
- 回答日時:
文字列を3つに分けて、1つ目と3つ目の位置を入れ替えたい。
ということですか?
FIND関数やSEARCH関数でカンマの位置を調べれば、各位置の文字の長さは分かりますよね。
あとは…
MID関数で元の文字列から3つ目を切り抜いて、MID関数で真ん中を切り抜いて、MID関数で1つ目を切り抜いて、
この順に繋げばOK。
そんだけです。
この手順の中で何が分かりませんか?
数式だけ示して欲しいということですが、意味が分からないと同様の問題に遭遇した時にまた悩むことになりますよ。
「急いでいる」ということですので、他人に聞くなんてまどろっこしいことしないで自分で解決できるようにすべきです。
分からない点について質問されれば詳しく教えます。
返答お待ちしてます。
早々に回答いただきありがとうございます。
関数初心者で、どの関数を使えばできるのかさえ分からなかったので、大変参考になりました。
教えていただいた関数で先ほどから試しているのですがまだうまくできないので、明日再度試してみます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 関数EXACT(文字列,文字列)とexcelVBA 3 2022/04/14 15:07
- Excel(エクセル) Excelで数式をそのままコピーしたい どうすればいいですか? 4 2022/09/16 02:16
- Excel(エクセル) エクセルの書式設定の表示形式で設定した文字を文字列としてコピーしたい 1 2022/12/21 10:41
- フリーソフト Googleスプレッドシートで特定の言葉が含まれる行の色分けをしたいのですが 4 2022/04/30 15:29
- Excel(エクセル) 【再度】Excelの関数について教えてください。 4 2023/07/28 13:06
- JavaScript 電車の運賃を出すプログラムを作っています。 2 2022/06/22 09:36
- Excel(エクセル) エクセルの関数式を教えてください。 2 2022/11/29 21:09
- Excel(エクセル) Excelの関数について教えてください。 5 2023/07/28 11:27
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Excel(エクセル) エクセルVBAでセルに表示されているとおりの数値を取得したい(時間の計算結果) 1 2022/03/30 17:52
このQ&Aを見た人はこんなQ&Aも見ています
-
Excel同一セル内の、アルファベットと数字の順番を入れ替えについて教えてください
Excel(エクセル)
-
EXCELで文字列の並べかえ
Excel(エクセル)
-
セルの中の数字の並べ替え
Excel(エクセル)
-
-
4
エクセルで空白文字の前後を入れ替えることってできますか?
Excel(エクセル)
-
5
エクセルのセル内の行の並び替えについて
Excel(エクセル)
-
6
エクセルの1セル内の文字列操作。
Excel(エクセル)
-
7
【Excel】 文字の前後を入れ替えたい
Excel(エクセル)
-
8
同一セル内の重複文字を削除したいです
Excel(エクセル)
-
9
エクセルのセル内の数字順に変える
その他(Microsoft Office)
-
10
同じセルで重複している文字を削除したい
Excel(エクセル)
-
11
有無、要否、賛否、是非、可否、当否…これらの言葉について
その他(教育・科学・学問)
-
12
EXCEL VBAで全選択範囲の解除
Excel(エクセル)
-
13
エクセルで文字が混じった数字を並べ替えしたいのですが
Excel(エクセル)
-
14
エクセルで一つのセルの中の数字を並び替え
Excel(エクセル)
-
15
エクセルで文字列の左右を入れ替える方法
Excel(エクセル)
-
16
エクセルで複数のコメントのサイズ(形)を一括で変える方法
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
複数の文字列のいずれかが含ま...
-
Excelの入力規則で2列表示したい
-
SUMに含まれる範囲から特定のセ...
-
エクセルでセルの値分の個数の...
-
数式が入ったセルを含めて、数...
-
Excel上でのデータ数字が連番で...
-
エクセルで曜日に応じた文字を...
-
「エクセル」特定の行(セル)...
-
別のセルに値が入力されたら、...
-
Excelでの検索結果を含む行だけ...
-
エクセル:横長の表を改行して...
-
スペースとスペースの間の文字...
-
エクセルで表示されている数字...
-
列の数字に100をかけたい
-
セルをダブルクリックで、画像...
-
銀行の振込み手数料をエクセル...
-
エクセルで、毎日の走行距離(...
-
文字(数字)色別に計算するには?
-
excelのセルの自動移動
-
エクセルで公平にチーム分けす...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelの入力規則で2列表示したい
-
複数の文字列のいずれかが含ま...
-
SUMに含まれる範囲から特定のセ...
-
数式が入ったセルを含めて、数...
-
Excel上でのデータ数字が連番で...
-
エクセルで表示されている数字...
-
エクセルでセルの値分の個数の...
-
Excelでの検索結果を含む行だけ...
-
「エクセル」特定の行(セル)...
-
スペースとスペースの間の文字...
-
エクセル:横長の表を改行して...
-
エクセルで曜日に応じた文字を...
-
列の数字に100をかけたい
-
エクセルで、毎日の走行距離(...
-
エクセル セル内の文字数を超え...
-
Excelのセル内文字の並び替えに...
-
エクセルのsumifでかけ算してか...
-
時間を「昼間」と「夜間」に分...
-
別のセルに値が入力されたら、...
-
入退社日より各月末の在籍者数...
おすすめ情報