問題は、テキスト内のすべての名前と役割を別々の列に分けたいということです。つまり、(Janu Dowe (リード AM); Ron Peno (バックアップ AT); Alex Nano (バックアップ AT))。
「Janu Dowe」を1列、役割:「Lead AM」などに分けたい.1つのセルに3つの名前と役割があり、すべて別々の列に分けたい. いくつかの方法を試しました。ありがとうございました
問題は、テキスト内のすべての名前と役割を別々の列に分けたいということです。つまり、(Janu Dowe (リード AM); Ron Peno (バックアップ AT); Alex Nano (バックアップ AT))。
「Janu Dowe」を1列、役割:「Lead AM」などに分けたい.1つのセルに3つの名前と役割があり、すべて別々の列に分けたい. いくつかの方法を試しました。ありがとうございました
あなたのデータが本当にあなたがそれを表現する方法であるかどうか
名前 (役割);名前 (役割);名前 (役割)
Name には 1 つ以上の単語を指定できます。役割は常に括弧で囲まれ、名前 (役割) グループはセミコロンで区切られている場合、次のマクロがその役割を果たします。
マクロは、データが A1 から始まる列 A にあり、隣接する列には値がないことを前提としています。そうでない場合は、コードを変更する必要があります。
このマクロ (サブ) を入力するには、alt-F11 で Visual Basic Editor を開きます。プロジェクト エクスプローラー ウィンドウでプロジェクトが強調表示されていることを確認します。次に、トップ メニューから [挿入/モジュール] を選択し、開いたウィンドウに以下のコードを貼り付けます。
このマクロ (サブ) を使用するには、alt-F8 でマクロ ダイアログ ボックスを開きます。名前でマクロを選択し、実行します。
Option Explicit
Sub SplitData()
Dim r As Range, c As Range
Set r = Range("P36", Cells(Rows.Count, "P").End(xlUp))
For Each c In r
c.TextToColumns DataType:=xlDelimited, semicolon:=True, other:=True, _
otherchar:="("
Next c
Set r = r.CurrentRegion
r.Replace what:=")", replacement:="", lookat:=xlPart
r.EntireColumn.AutoFit
End Sub
これは手動で行うこともできますが、マクロの方が簡単な場合があります。このマクロは、最初に区切り文字としてセミコロンと "(" を使用して TextToColumns メソッドを実行し、次に Replace メソッドを使用して残りの ")" を削除します。
列 1 が
Alex isa Nano (バックアップ AT); ロン・ペノ (バックアップ AT); Janu Dowe Smyth (リード AM)
次に、解析は次のようになります =LEFT(A1,FIND("(",A1)-2) =MID(A1,FIND("(",A1)+1,(FIND(")",A1)-FIND(" (",A1))-1) =MID(A1,FIND(";",A1)+2,FIND("(",A1,FIND(";",A1))-FIND(";",A1) )-2) =MID(A1,FIND("(",A1,FIND(";",A1))+1,FIND(")",A1,FIND(";",A1))-FIND(" (",A1,FIND(";",A1))-1) =MID(A1,FIND(")",A1,FIND(";",A1))+3,FIND("(",A1, FIND(";",A1,FIND(";",A1)+1))-FIND(";",A1,FIND(";",A1)+1)-2) =MID(A1,FIND( "(",A1,FIND(";",A1,FIND(";",A1)+1))+1,LEN(A1)-FIND("(",A1,FIND(";",A1, FIND(";",A1)+1))-1)