
winXP Excel2003
外国人の氏名(カタカナ)と敬称が大量に入力されたファイルがあります。
氏名と敬称が同じセルに入っているので、敬称のみを
隣のセルに移したいのですがうまくいきいません。
名前は各国さまざまで、スペースでいくつかに区切られています。
名前の最後にスペース+敬称がついており、敬称の種類はたくさんあります。
(様、氏、閣下、女史)など。
そこで、
「一番右のスペース以降の文字列を抽出」
すればいいかな?と思うのですが、IfやRight、LENなどを
使っても、何が悪いのかエラーが出てしまいます。
区切り位置ウィザードでは、スペース全てで区切られてしまって
氏名がバラバラになってしまいます。
何かいい関数はありませんか?
勉強不足ですみません。宜しくお願いします。
-------------------------------------------
元データ例)
ハリー ポッター 様
セブルス スネイプ 閣下
ボガート 氏
ニコラス ド ミムジー ポーピントン 卿
No.3ベストアンサー
- 回答日時:
様、氏、閣下、女史などの敬称で最長のものが2文字なら、これでいけると思います。
=MID(RIGHT(A1,3),FIND(" ",ASC(RIGHT(A1,3)))+1,2)
もし3文字の敬称もあるなら
=MID(RIGHT(A1,4),FIND(" ",ASC(RIGHT(A1,4)))+1,3)
ただし、これは敬称が1文字でスペースの前の文字列も1文字の人、たとえば、「アイ ウ 様」 みたいのがいたらダメです。(そんな人いないかな)
一番うまく行きました!
ありがとうございます!!
三文字の敬称もあるのですが、全体では少ないほうなので
個別で直すことにします。
思っていたより難問で 自力では太刀打ちできませんでした…
本当に助かりました。
No.5
- 回答日時:
不備を修正し、かつ3文字にも対応させました。
=IF(4-LEN(SUBSTITUTE(JIS(RIGHT(A1,4))," ",""))=1,MID(RIGHT(A1,4),FIND(" ",
JIS(RIGHT(A1,4)))+1,3),MID(RIGHT(A1,3),FIND(" ",JIS(RIGHT(A1,3)))+1,2))
No.4
- 回答日時:
「配列数式」での計算になります。
敬称は「妃殿下」であろうが「大統領閣下」であろうが、何文字でも構いません。ただし、中国人の方のように「名前」の方に漢字が入っていたらサッパリダメです。
1)A1:A4 に「元データ例)」が入っているとして、B1 に
=LEFT(A1,SMALL(IF(CODE(MID(A1,ROW(INDIRECT("$A1:$A"& LEN(A1))),1))>12320,ROW(INDIRECT("$A1:$A"& LEN(A1))),LEN(A1)),1)-1)
と入力し、[Shift]・[Ctrl] キーと同時に [Enter] キーを押下して確定します。
このとき、数式バーには「{ }」で括られた式が入ります(配列数式)。
2)以上で、B列に敬称以外が入りましたので、今度は、C1 に
=SUBSTITUTE(A1,B1,"")
と入力し、普通に [Enter] で確定します。
3)B1:C1 を選択して、下方向に必要分コピーします。
4)最後にB・C列を選択し、形式を選択して「値」で貼り付けます。
ありがとうございます!
やってみました。
カタカナの人はうまくできました!
ただ、漢字名もたくさんあったこと、
あとなぜか、エラー(#VALUE!)が出てしまうところがありました
思ったよりも難しい課題で 一人では太刀打ちできませんでした。
ご助言感謝します。ありがとうございました!
No.2
- 回答日時:
少し長くなりますが、組込み関数でもできます。
以下、元の文字列がA1セルにあるとします。
●A案
最後のスペースを短剣符に置き換えて、短剣符を探す
・最後の全角スペースより後方の文字列(敬称)
=RIGHT(A1,LEN(A1)-FIND("†",SUBSTITUTE(A1," ","†",LEN(A1)-LEN(SUBSTITUTE(A1," ","")))))
・最後の全角スペースより前方の文字列(氏名)
=LEFT(A1,FIND("†",SUBSTITUTE(A1," ","†",LEN(A1)-LEN(SUBSTITUTE(A1," ",""))))-1)
●B案
右から1,2,3,4文字目を順次切り出して、スペースであるかどうかを調べる。
敬称部分が3文字以下という前提で。
・最後の全角スペースより後方の文字列(敬称)
=RIGHT(A1,MATCH(" ",LEFT(RIGHT(A1,{1,2,3,4}),1),0)-1)
・最後の全角スペースより前方の文字列(氏名)
=LEFT(A1,LEN(A1)-MATCH(" ",LEFT(RIGHT(A1,{1,2,3,4}),1),0)+1)
ご参考まで。
No.1
- 回答日時:
関数で右から文字を数えるのは見あたらないのでユーザー定義関数にしてみました。
参考までに
Option Explicit
Dim L, A
Function RightStr(MyStr)
L = Len(MyStr)
For A = L To 1 Step -1
If Mid(MyStr, A, 1) = " " Then
RightStr = Mid(MyStr, A + 1, L - A)
Exit For
End If
Next A
End Function
す、すみません
これをどこに入れたらいいのかわかりませんでした・・・
多分私のやり方が悪いと思うのですが
元データが崩れてしまいました
思ったよりも難しい課題で 一人では太刀打ちできませんでした。
ご助言感謝します。ありがとうございました!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルの数式で教えてください。 1 2023/02/02 10:20
- Excel(エクセル) Excel 文字を抽出したい 4 2022/06/22 11:43
- Visual Basic(VBA) サブフォルダ(データ)にある複数の.xlsxファイルのSheet3のA2セルの値で01から左側をB2 2 2022/08/14 15:46
- Visual Basic(VBA) 指定列最終行までのスペースを改行するVBAについて 2 2022/06/01 19:50
- Excel(エクセル) Excelの数式についての質問 1 2022/10/31 15:50
- Excel(エクセル) エクセルにおいてセル内の文字を出来るだけ大きく表示する方法を教えてください。 4 2022/07/30 08:08
- Excel(エクセル) ある数値に対して、値を返す数式についてです 2 2022/09/13 22:06
- Excel(エクセル) エクセルで#以降の文字を取得したい 1 2022/03/28 13:14
- その他(法律) 【 ※ 500文字の長文】 「訴える」と脅されました。 つい先日、Twitterの音声ツール「スペー 3 2022/07/12 08:02
- Excel(エクセル) 名前と日付が一致する箇所にフラグを立てる関数が知りたいです 4 2022/08/11 02:24
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
EXCELのVBAでLenB関数について
-
CString型 全角半角を意識せず...
-
アクセス ステータスバーの文...
-
ファイル名の一部削除について
-
WSTRINGとは?
-
TextFieldParserの固定長桁数を...
-
StrConvでUnicodeに変換出来な...
-
Err.Number
-
一番右のスペース以降の文字列...
-
PocketPcでコマンドラインパラ...
-
C言語とWin32APIで全角かなの...
-
「シフトJIS X 0213」形式の文...
-
VBA 変数名に変数を使用したい。
-
VBとアクセスでSQL文に変...
-
vba フィルター 複数条件 3つ以...
-
C# DataTableに最後に追加した...
-
VB6.0の「vbFromUnicode」はVB....
-
C#でbyte配列から画像を表示さ...
-
ExcelVBAからAccessMDB内のテー...
-
Dir関数で読み取り順を操作でき...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
EXCELのVBAでLenB関数について
-
ファイル名の一部削除について
-
CString型 全角半角を意識せず...
-
StrConvでUnicodeに変換出来な...
-
機種依存文字と特殊文字について
-
一番右のスペース以降の文字列...
-
TextFieldParserの固定長桁数を...
-
文字列から、null値を除去する方法
-
アクセス ステータスバーの文...
-
マルチバイト混在の文字列整形
-
Access VBAの参照設定(DAO)につ...
-
全角文字と半角文字を判別して...
-
VBからID3タグをいじる方法
-
VB6のテキストボックスに入力し...
-
ASC関数
-
【Excel VBA】セル内テキストの...
-
エンコード・デコードの仕方
-
「シフトJIS X 0213」形式の文...
-
バイナリデータの取り方
-
VB.NET ListBox内の前方一致で...
おすすめ情報