• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセル・1つのセルに入った漢字(カナ)の分け方)

エクセルで漢字(カナ)を分ける方法

このQ&Aのポイント
  • エクセルで1つのセルに入った漢字(カナ)を分ける方法について教えてください。
  • 具体的には、A1のセルに「山田 花子(ヤマダ ハナコ)」と入力されている場合に、B1のセルに「山田 花子」、C1のセルに「(ヤマダ ハナコ)」と分けてデータ化する方法を知りたいです。
  • また、C1のセルにはPHONETIC関数を使って「やまだ はなこ」に直したいですが、エラーが起きないで処理できるでしょうか?

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

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.5

No.3です! たびたびごめんなさい。 C列がカタカナの場合はひらがなに直さないといけなかったのですね? もう一度コードを載せておきます。 Sub test() Dim i As Long Dim buf As String For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row On Error Resume Next buf = WorksheetFunction.Substitute(WorksheetFunction.Substitute _ (Cells(i, 1), "(", "("), ")", ")") With Cells(i, 2) .Value = Mid(buf, 1, WorksheetFunction.Find("(", buf) - 1) .Offset(, 1) = Mid(buf, WorksheetFunction.Find _ ("(", buf) + 1, Len(buf) - Len(Cells(i, 2)) - 2) .Offset(, 2) = StrConv(Cells(i, 3), vbHiragana) End With Next i Columns(3).Delete (xlToLeft) Columns("A:C").AutoFit End Sub こんな感じではどうでしょうか? 何度も失礼しました。m(__)m

poohcats
質問者

お礼

丁寧なご説明ありがとうございました

その他の回答 (7)

  • layy
  • ベストアンサー率23% (292/1222)
回答No.8

>最終的なデータとして >A1セル→山田 花子(やまだ はなこ) 編集元のA列「山田 花子(ヤマダ ハナコ)」も上書き修正したいですか? B列とC列ができた後で連結でもいいのでは?。

poohcats
質問者

お礼

ありがとうございました

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.7

A1に山田花子とありB列に=A1&"("&PHONETIC(A1)&")"と入って、山田 花子(ヤマダ ハナコ)となっているので「ない」場合を考える。こういう場合もあるということ。 ーー ?1に山田 花子(ヤマダ ハナコ)とある場合は、データー区切り位置ーその他で( 左カッコ を指定ー完了 で出来る。 )は置換で抹消する。 これが一番簡単で安定。さらにB列で)で区切り位置にしても良い。 マクロの記録をすれば、VBAコードはわかる。 複数行分もはじめ範囲指定して始めれば良い。 ーー VBAでReplaseやInstr関数でやる手もあるが、関数などでやるのが良かろう。VBAの勉強をしているのですか。 1回限りの作業のようだし、VBAを使うまでも無いだろう。 エクセルに強い方でなくても出来ることだ。

poohcats
質問者

お礼

ありがとうございました

  • layy
  • ベストアンサー率23% (292/1222)
回答No.6

『山田 花子(ヤマダ ハナコ)』 VBAでは この文字数分(=14)ループしてもできる話です。 区切り分けたり、(括弧)を削除したり、かなに変えたり、 とすべてを処理しながらB列やC列の編集をする。

poohcats
質問者

お礼

ありがとうございました

  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.4

追加です "(" の部分の「(」の半角と全角を間違うとエラーになります。

poohcats
質問者

お礼

ありがとうございました

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.3

こんばんは! 関数の方が簡単なような気がしますが、VBAをご希望のようなので・・・ 一例です。 (単に関数でやる方法をコードにしただけです) A列のデータは1行目からあり、必ず( )があるという前提です。 Sub test() Dim i As Long Dim buf As String For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row On Error Resume Next buf = WorksheetFunction.Substitute(WorksheetFunction.Substitute _ (Cells(i, 1), "(", "("), ")", ")") With Cells(i, 2) .Value = Mid(buf, 1, WorksheetFunction.Find("(", buf) - 1) .Offset(, 1) = Mid(buf, WorksheetFunction.Find _ ("(", buf) + 1, Len(buf) - Len(Cells(i, 2)) - 2) End With Next i Columns("A:C").AutoFit End Sub こんな感じではどうでしょうか?m(__)m

poohcats
質問者

お礼

ありがとうございました

  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.2

B1に =LEFT(A1,FIND("(",A1)-1) で山田 花子が C1に =MID(A1,FIND("(",A1)+1,LEN(A1)-LEN(B1)-2) でヤマダ ハナコが それぞれ取り出せます 取り出した後にコピー形式を選択して貼り付けで「値」を貼り付けて その後PHONETICと書式のふりがな機能を使って直しください。

poohcats
質問者

お礼

ありがとうございました

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.1

Sub Macro1()  Dim r As Long  r = Range("A65536").End(xlUp).Row  Range("A1:A" & r).Replace what:=")", replacement:="", matchbyte:=False  Range("A1:A" & r).Replace what:="(", replacement:="(", matchbyte:=False  Range("A1:A" & r).TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _   Other:=True, OtherChar:="(", FieldInfo:=Array(Array(1, 1), Array(2, 1))  Range("B:B").Phonetics.CharacterType = xlHiragana  Range("C1:C" & r).Formula = "=PHONETIC(B1)"  Range("A:A").Insert  Range("A1:A" & r).Formula = "=B1&""(""&D1&"")"""  Range("A1:D" & r).Value = Range("A1:D" & r).Value  Range("C:C").Delete  Range("A:C").EntireColumn.AutoFit End Sub #要らないループ処理は省いているので,見た目なんだかべたべたですね。

poohcats
質問者

お礼

ありがとうございました

関連するQ&A