プロが教えるわが家の防犯対策術!

A列に入っているデータの形式は、以下の2通りのどちらかです。

西日本)営業部)山田 太郎
総務課)山田 花子

それをB, C列に以下のように分けたいです。
西日本)営業部)     山田 太郎
総務課)         山田 花子

つまり、***)***)+++ か ***)*** のどちらかの形式で、一番右が名前、それより左が部署名になります。「部」や「課」などの言葉は分けるキーには使わず、一番右の ")" (右括弧) をキーに分けたいです。

宜しくお願いします。

A 回答 (9件)

回答番号:No.5をヒントに


B1に =LEFT(A1,FIND(")",SUBSTITUTE(A1,")",")",LEN(A1)-LEN(SUBSTITUTE(A1,")","")))))
C1に =RIGHT(A1,LEN(A1)-LEN(B1))
それぞれを下方にオートフィル

画像参照
「Excel関数: 部署名と名前を分ける」の回答画像7
    • good
    • 0
この回答へのお礼

これでもできました!!
ありがとうございます。(^^)

お礼日時:2009/03/08 01:21

No.1です



ならば、名前の部分たけですが、Right関数で
後ろ6文字まで取り出し、
その列を選択したあと、
置換で「)」を何もなしに
置き換えればどうですか?
    • good
    • 0
この回答へのお礼

ありがとうございました。(^^)
残念ながら、名前の長さも部署の長さもばらばらなので、うまくいきませんでした。

お礼日時:2009/03/08 01:35

リンク先の 「【Excel2003】右側から文字位置検索をしたい」


よりかは楽かな
B1セルに
=LEFT(A1,CHOOSE(LEN(A1)-LEN(SUBSTITUTE(A1,")","")),FIND(")",A1),FIND("☆",SUBSTITUTE(A1,")","☆",2))))
閉じ括弧が1つの場合は、FIND(")",A1) で計算する
閉じ括弧が2つの場合は、FIND("☆",SUBSTITUTE(A1,")","☆",2)) で計算する

C1セルに =SUBSTITUTE(A1,B1,"")
参考まで
「Excel関数: 部署名と名前を分ける」の回答画像8
    • good
    • 0
この回答へのお礼

参考になりました。
ありがとうございました。(^^)

お礼日時:2009/03/08 01:33

私だったら簡単に以下のようにします。



【1】A列を選択
【2】データ(D)---区切り位置(E)と進み、
【3】カンマやタブなどの区切り文字~~データ(D)を選び、次へ(N)
【4】区切り文字を指定する。今回は、その他(O)にチェックを入れ、その右の四角内に、 ) を入れて、次へ(N)。で完了(F)。
【5】そしたら、) で全部分離されます。

データが
***)***)+++ の場合は、 A~C列に入るでしょう。
***)***    の場合は、A,B列に入るでしょう。

たぶん名前をC列に揃えたいと思います。
あとは適当に作業すればOK。一例としては
データが一行目からあるとして、

【6】E1セルに =IF(ISBLANK(C1),A1,A1&")"&B1)
F1セルに =IF(ISBLANK(C1),B1,C1)  と入れて、下に引っ張る。

ABC列は非表示にしておくか、EF列は値にして置けばよいかと思います。
    • good
    • 0
この回答へのお礼

なるほど。
こういうやり方もあるのですね。
ありがとうございました。(^^)

お礼日時:2009/03/08 01:16

http://oshiete1.goo.ne.jp/qa4747637.html

文字列の右からの検索方法に関する質問があります、参考にしてください。
    • good
    • 0
この回答へのお礼

これはできたらいいなと思ってました。
非常に参考になります。
ありがとうございました。(^^)

お礼日時:2009/03/08 01:10

少し長くなりますが、どうしてもBC列を使いたい場合、



B1:=LEFT(A4,MAX(FIND(")",A4),IF(ISERROR(FIND(")",A4,FIND(")",A4)+1)),0,FIND(")",A4,FIND(")",A4)+1))))

C1:=RIGHT(A4,LEN(A4)-MAX(FIND(")",A4),IF(ISERROR(FIND(")",A4,FIND(")",A4)+1)),0,FIND(")",A4,FIND(")",A4)+1))))

または、BCD列を作業列として使い、EF列に目的の文字列を表示すると、式がすっきりして、何をやっているかが分かりやすくなります。
B1:=FIND(")",A1)
C1:=IF(ISERROR(FIND(")",A1,B1+1)),0,FIND(")",A1,B1+1))
D1:=MAX(B1:C1)
E1:=LEFT(A1,D1)
F1:=RIGHT(A1,LEN(A1)-D1)
あとは、BCD列を非表示にすればいいでしょう。
    • good
    • 0
この回答へのお礼

これでできました。
詳しく作業列に分けて頂いているので、後で勉強してみます。
ありがとうございます。(^^)

お礼日時:2009/03/08 00:44

配列数式(CTRT+SHIFT+ENTER)で


=RIGHT(A1,LEN(A1)-MAX((MID(A1,COLUMN(A1:z1),1)=")")*COLUMN(A1:z1)))
    • good
    • 0
この回答へのお礼

名前の方は、これで取れました。
ありがとうございます。(^^)

お礼日時:2009/03/08 00:42

名前の文字数が5文字で一定ならば



B1に =LEFT(A1,LEN(A1)-5)
C1に =RIGHT(A1,5)
下方にオートフィル 
A列を削除する場合は、B列及びC列をコピー → 形式を選択して貼り付け → 値の後 A列を削除
「Excel関数: 部署名と名前を分ける」の回答画像2
    • good
    • 0
この回答へのお礼

ありがとうございます。
そうだといいのですが、残念ながら会社の人には、5文字以外の名前の方もいらっしゃるのです。

お礼日時:2009/03/07 10:06

A列のデータが、5文字までの名前なら


Right関数で後ろ5文字までをとりだせば
お望みのようになりませんか?
    • good
    • 0
この回答へのお礼

ありがとうございます。
そうだといいのですが、残念ながら会社の人には、5文字以上の名前の方もいらっしゃるのです。

お礼日時:2009/03/07 10:05

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!