• ベストアンサー

エクセル、関数でセル内の半角カタカナ漢字、を分けて他のセルへ表示する方法

下記のようにA列の1つのセル内に、半角カタカナ漢字がつながって入力されてるデータがあります。これを関数でD列にカタカナ姓、E列にカタカナ名、F列に漢字姓、G列に漢字名と分解して表示させたいのですが、難しくできませんでした。どうかよろしくお願いします。      A 1 スズキ イチロウ鈴木 一郎 2 ヤマダ タロウ山田 太郎

質問者が選んだベストアンサー

  • ベストアンサー
回答No.4

関数でと言う事なので、ちょっと作ってみました。 [A列]に入力されている文字が [半角カナ姓]+[半角スペース]+[半角カナ名]+[全角漢字姓]+[半角スペース]+[全角漢字名] だと仮定して作っています。 もし、スペースが半角でなくて全角だと少し関数が変わってきます。 それでは D1に入る関数 =MID(LEFTB(A1,LENB(JIS(A1))-LENB(A1)+1),1,(FIND(" ",LEFTB(A1,LENB(JIS(A1))-LENB(A1)+1),1)-1)) F1に入る関数 =MID(LEFTB(A1,LENB(JIS(A1))-LENB(A1)+1),FIND(" ",LEFTB(A1,LENB(JIS(A1))-LENB(A1)+1),1)+1,99) G1に入る関数 =MID(RIGHTB(A1,LENB(A1)-((LENB(JIS(A1))-LENB(A1))+1)),1,FIND(" ",RIGHTB(A1,LENB(A1)-((LENB(JIS(A1))-LENB(A1))+1)),1)-1) H1に入る関数 =MID(RIGHTB(A1,LENB(A1)-((LENB(JIS(A1))-LENB(A1))+1)),FIND(" ",RIGHTB(A1,LENB(A1)-((LENB(JIS(A1))-LENB(A1))+1)),1)+1,99) これで1行目から下へコピーでOKなはずです。 内容としては半角カナを全角カナに変換して、その文字バイト数の差を使ってカナと漢字に分割。あとは半角スペースの位置を割り出して姓名に分割。といった感じです。

akitana
質問者

お礼

私の情報掲載不足でしたが、漢字名の間のスペースは全角でした。ためしにカタカナの方でしてみたのですが姓は満点、名はところどころ最後の1文字が不足という状況でした。たくさんの方に親切にしていただき感激です。私ももっと使えるように調べて行きたいと思います。

その他の回答 (5)

回答No.6

度々すいません。No.4です。 F1に入る関数とG1に入る関数で誤記入をしてしまいました。 A12となっている所ですが、正しくはA1です。 訂正をお願い致します。

akitana
質問者

お礼

ご指摘の通り濁点のないものやD列G列は100パーセントです。E列F列は1度目に作っていただいたものが精度が高かったようです。文字数の数え方が少しずつわかってきました。難しいのですね。ゆっくり理解していきたいと思います。

回答No.5

No.4です。 ごめんなさい。 半角カナから全角カナに変換する際に濁点の数が含まれなくなってしまうようで誤差がでてしまったようです。ちょこっと内容を変更しました。 また、漢字苗字の間のスペースは全角との事で、こちらもちょこっと変更しました。 試して頂けると幸いです。 D1に入る関数 =MID(LEFTB(A1,(LENB(JIS(A1))+LENB(A1)-LENB(SUBSTITUTE(A1,"゛",""))*2)),1,(FIND(" ",LEFTB(A1,(LENB(JIS(A1))+LENB(A1)-LENB(SUBSTITUTE(A1,"゛",""))*2)),1)-1)) E1に入る関数 =MID(LEFTB(A1,(LENB(JIS(A1))+LENB(A1)-LENB(SUBSTITUTE(A1,"゛",""))*2)),FIND(" ",LEFTB(A1,(LENB(JIS(A1))+LENB(A1)-LENB(SUBSTITUTE(A1,"゛",""))*2)),1)+1,99) F1に入る関数 =MID(RIGHTB(A1,(LENB(SUBSTITUTE(A12,"゛",""))*2-LENB(JIS(A1)))),1,FIND(" ",RIGHTB(A1,(LENB(SUBSTITUTE(A12,"゛",""))*2-LENB(JIS(A1)))),1)-1) G1に入る関数 ==MID(RIGHTB(A1,(LENB(SUBSTITUTE(A12,"゛",""))*2-LENB(JIS(A1)))),FIND(" ",RIGHTB(A1,(LENB(SUBSTITUTE(A12,"゛",""))*2-LENB(JIS(A1)))),1)+1,99)

回答No.3

え~ 暇だったのでやってみましたが 関数でやるのは 大変 (1)A列が 一度 [書式]→[ふりがな]で 編集 前のカタカナと漢字の振り仮名が一致していることが 条件 カタカナ名が 苦労しました D1は =LEFT(A1,FIND(" ",JIS(A1),1)-1) E1は =MID(SUBSTITUTE(PHONETIC(A1),LEFT(A1,FIND(" ",JIS(A1),1)-1),""),FIND(" ",SUBSTITUTE(PHONETIC(A1),LEFT(A1,FIND(" ",JIS(A1),1)-1),""),1)+1,FIND(" ",SUBSTITUTE(PHONETIC(A1),LEFT(A1,FIND(" ",JIS(A1),1)-1),""),FIND(" ",SUBSTITUTE(PHONETIC(A1),LEFT(A1,FIND(" ",JIS(A1),1)-1),""),1)+1)-(FIND(" ",SUBSTITUTE(PHONETIC(A1),LEFT(A1,FIND(" ",JIS(A1),1)-1),""),1)+1)) F1は =TRIM(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1,D1,""),E1,""),G1,"")) G1は =RIGHT(JIS(A1),LEN(JIS(A1))-(FIND(" ",JIS(A1),FIND(" ",JIS(A1),1)+1))) ただし 入力順は D1→G1→E1→F1でお願いします ※検証していないので 試して間違っていたら ごめんなさい

akitana
質問者

お礼

お手数をおかけしました。わざわざ作っていただき感謝しております。振り仮名が使えると良かったのですが、一致していないデータを修正するには件数が多すぎて残念です。こんなに関数を組み合わせることは私の力量では思いつきませんでした。皆さんのようにできるようがんばってっみます。

noname#204879
noname#204879
回答No.2

》 カタカナと漢字の間にスペースがない所があるのでこれだとできませんね。 と[回答番号:No.1]にありますが、この部分だけの対処法を提案しておきます。 添付図を参照ください。(姓名が、鈴木 一郎、山田 太郎、梅宮 アンナ、東 ちづる、泉 ピン子、の場合) B1: {=LEFT(A1,MATCH(TRUE,(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))>"ん",0)-1)}   ただし、上式は配列数式です。 C1: =SUBSTITUTE(A1,B1,"") ただし、姓名の部分が次の場合には当該手法は適用できません。 ビート たけし、はしの えみ、ラモス 瑠偉、あおい 輝彦、オノ ヨーコ

akitana
質問者

お礼

この方法でうまくいかないかといろいろ試していました。すぐに理解できる技術がないので、これから活用できるようがんばってみます。

  • t-yamada_2
  • ベストアンサー率40% (587/1460)
回答No.1

「スズキ イチロウ 鈴木 一郎」と分割する語句がスペースで区切られていれば A1セルの内容をD1にコピーし、D1セルを選択してメニューのデータ(D)-区切り位置(E)-「カンマやタブなどの~」にチェック→「スペース」と「連続した区切り文字は~」にチェックして「完了」で分割できます。 ただ「スズキ イチロウ鈴木 一郎」とカタカナと漢字の間にスペースがない所があるのでこれだとできませんね。

akitana
質問者

お礼

おっしゃる通り、カタカナと漢字の間だけはスペースがありません、それからできるだけ関数で処理をしたかったのです。「連続した区切り文字は~」の件、大変勉強になりました。別件で使う機会が多そうです。有難うございました。

関連するQ&A