• ベストアンサー

エクセルについて

エクセルを使って、たとえば aaaa bbbb(BBBB) cccc eeee (EEEE) とある文字列から( )を取り除き、 aaaa bbbb cccc eeee と表示させたいのですが、( )を含んだものについてはこの部分を取り、意図する通りに表示させることはできますが、( )が付いていないものに対して同じ処理を行うと#VALUEと出てうまくいきません。 この処理をどのようにして良いかなかなか思いつきません。 ちなみに表示の方法は search関数で ( 位置を探し、その後mid関数で ( の一つ左側まで表示させています。 bbbb(BBBB)→ bbbb   何か良い方法はないでしょうか。 よろしくお願いします。

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

  • ベストアンサー
  • s_yoshi_6
  • ベストアンサー率73% (1113/1519)
回答No.4

SEARCH関数とMID関数を使われているのでしたら、おそらく式は =MID(A1,1,SEARCH("(",A1)-1) のようにされていると思いますので、そのままIFとISERRORでエラー処理だけを付け加えて、 =IF(ISERROR(SEARCH("(",A1)),A1,MID(A1,1,SEARCH("(",A1)-1)) とされるとよいと思います。 なお蛇足ですが、カッコの全角、半角が混在している可能性があれば、ASCを使って半角に統一するなどした方がよいかもしれません。 =IF(ISERROR(SEARCH("(",ASC(A1))),A1,MID(A1,1,SEARCH("(",ASC(A1))-1))

gogo-t
質問者

お礼

アドバイスありがとうございます。 カッコの全角、半角が混在している可能性がありましたので、この処理で私の意図するとおりに表示することができました。 ありがとうございました。

その他の回答 (6)

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.7

関数でなければ駄目ですか? 文字を指定して「区切り位置」とできる機能があります。 ただしサンプルで提示されているカッコが半角全角混在しているようですのであらかじめ置換で統一してください。 1.セルの範囲を指定する。 2.メニューのデータ>区切り位置をクリック。 3.カンマやタブ(以下略)で「次へ」。 4.「その他」にチェックを入れ、文字に"("を指定。 5.プレビューで結果が見えるのでよければ「完了」。 後は分離された列を削除、ではいかが?

gogo-t
質問者

補足

アドバイスありがとうございます。 この処理はあらかじめテンプレートがあり、自動でデータを取ってきてこれに入力されるものに対して行うので、自分でその都度処理をするものではないと思います。 ですから関数で処理を行おうと思いました。

  • hakone
  • ベストアンサー率54% (40/73)
回答No.6

こんにちは。 FINDなどで検索文字列がない可能性がある場合は、その 文字列を後ろにつけてから検索するのが常套手段です。 =LEFT(A1,FIND("(",A1&"(")-1) "("が全角と半角とがあるなら、 =LEFT(A2,MIN(FIND({"(","("},A2&"((")-1)) (こちらは、両方探して先にあった方より前を取り出す) =LEFT(A1,FIND("(",SUBSTITUTE(A1,"(","(")&"(")-1) (こちらは、(を(に置換してから取り出す) こんな書き方もできます。

gogo-t
質問者

お礼

アドバイスありがとうございます。 他の方にも書きましたように、今回は少し難しいようです。 >FINDなどで検索文字列がない可能性がある場合は、その文字列を後ろにつけてから検索するのが常套手段です。 勉強になりました。 ありがとうございました。

gogo-t
質問者

補足

みなさんたくさんのアドバイスありがとうございます。 現在いろいろ試している最中です。 結果については後ほど報告させていただきます。

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

(1)編集-置換で(を1半角スペースに「全て置換」 (2)編集-置換で)を1半角スペースに「全て置換」 (3)データ-区切り位置-カンマやタブなどの・・ に点が入って(選択されて)いることを確認-次へ (4)スペースにチェックを入れる-次へ-完了 スペース区切りで各列に分かれます。 (5)最初の部分{(までだけ}がA列に残るので B列以右は列削除 当初B列に別データがある場合は、適当数の列挿入して、(3)をしてください。 aaaa,bbbb,cccc,eeeeの部分に半角スペースがある場合 は一旦スペースを他の文字に置き換えて、上記の操作を行い、後にA列のその文字をスペースに置き換えてください。

gogo-t
質問者

補足

アドバイスありがとうございます。 No.7さんにも書きましたように、データを拾ってきて、それをテンプレートに書き込むまで自動で行っていますので、テンプレートにあらかじめ細工をしておき出力時にこのように表示させたいと思っております。 ですから、この場合ではちょっと難しいようです。

  • inte-nori
  • ベストアンサー率48% (33/68)
回答No.3

#1です。たびたびすみません。 =IF(ISERROR(FIND("(",A1,1)),A1,LEFT(A1,FIND("(",A1)-1)) でした。

gogo-t
質問者

補足

何度もありがとうございました。 アドバイスの通り試してみました。 おおむねうまくいきましたが、半角、全角の()が混在する場合はうまくいかないようでした。 ここをどうにか考えてみたいと思います。

  • inte-nori
  • ベストアンサー率48% (33/68)
回答No.2

#1です。すみません!質問を勘違いしていました。 B列に =IF(ISERROR(FIND("(",A1,1)),A1,LEFT(A1,FIND("(",A1))) でどうでしょうか?

  • inte-nori
  • ベストアンサー率48% (33/68)
回答No.1

A列に対象文字列が入っているとすると、 B列に =SUBSTITUTE(A1,"(","") としたあと、C列に =SUBSTITUTE(B1,")","") としてみたらどうでしょうか? もっとスマートな方法もありそうですが。

関連するQ&A

  • エクセルで教えて下さい。

    エクセルで教えて下さい。 オートフィルタ、ピボットテーブル以外で関数などで教えて下さい。 A列に大量の文字列があり重複したりしてます。 そこで、 B列にはA列にある大量の文字列を重複なしで表示させたいと思ってます。 例えば A列 B列 AAAA AAAA BBBB BBBB AAAA CCCC CCCC DDDD DDDD EEEE DDDD FFFF EEEE FFFF EEEE AAAA みたいな感じです。A列は編集可能でQQQQを追加すれば自動でB列にも表示させたいです。 このようなことを簡単にできますでしょうか? 宜しくお願いします。

  • エクセルについての質問。

    エクセルの関数に関して質問があります。 |10001|AAAA|10002|BBBB| |10002|BBBB|10004|DDDD| |10003|CCCC|10004|DDDD| |10004|DDDD|10001|AAAA| |10005|EEEE|10005|EEEE| ちょっと分かりにくいですが 一番上の行ですと、 列A=10001 列B=AAAA 列C=10002 列D=BBBB と考えて下さい。 質問です。 --------------------------- 列Cの数値を列Aから検索して 同じのがあれば列Bの数値を列Dに表示する。 --------------------------- この関数を教えて頂けませんでしょうか? 宜しくお願い致します。

  • UNIXで文字列分割

    UNIXでマルチバイトの文字列で分割したいです。 例) aaaa bbbb cccc dddd eeee ffff ↓ [bbbb]で分割 [1]aaaa [2] cccc dddd eeee ffff できればawkで処理をしたいと考えています。

  • SQLの書き方について教えてください。

    accessについて。 シートの中に列名name、列名friendnameがあります。 name,friendname aaaa,bbbb bbbb,cccc cccc,aaaa dddd,aaaa eeee,bbbb ffff,eeee ほしいデータは aaaa,bbbb,cccc bbbb,cccc,aaaa cccc,aaaa,bbbb dddd,aaaa,bbbb eeee,bbbb,cccc ffff,eeee,bbbb と友達の友達の名前がほしいのです。 SQLの書き方を教えてください。 よろしくお願いします。

  • [Excel]重複データの一方のセルが持つ値を一方の空白セルに反映させたい

    A列にある7000件ほどのデータの中から重複データのみを抽出し、 重複データの一方がB列に持つ値を、もう一方のデータのB列の空白セルに反映させたいのですが、方法はありますでしょうか? 「COUNTIF」を使って重複データの抽出はできますが、一方が持つデータをもう一方の空白に反映させることができません。 手作業では期限に間に合わない可能性がみえて焦っております。 恐縮ですがご教授いただけますでしょうか。 (例) [処理前] A列:B列:C列 1111:AAAA:aaaa 2222:BBBB:bbbb 3333:CCCC:cccc 1111:    :dddd 2222:    :eeee [処理後] A列:B列 1111:AAAA:aaaa 1111:AAAA:dddd 2222:BBBB:bbbb 2222:BBBB:eeee

  • SQLでの集計

    下記の様に、「複数のitemを買っているuserと購入されたitem」のテーブルと、 user item ---------------------------------- 田中 AAAA 田中 CCCC 田中 EEEE 北野 DDDD 北野 BBBB 北野 AAAA 小堺 CCCC 小堺 EEEE 松本 EEEE 松本 KKKK 松本 CCCC 松本 DDDD 浜田 BBBB 浜田 DDDD 下記の様な IDに紐付いた 「item」のテーブルから、 ID  item ---------------------------------- 1   AAAA 2   BBBB 3   CCCC 4   DDDD 5   EEEE 下記の様に各itemと各itemを買った場合に一緒に買われるitemの一覧を結果 として表示させたいのですが、クエリの作り方が思い浮かばず、困っています。 ※)可能であれば、買われたitemを表示する際にはbuy1から(左側から)同時購入 回数の多いitemを重複せずに並べて表示したい ID  item  buy1  buy3  buy4  buy5  buy6・・・・ ---------------------------------- 1  AAAA CCCC BBBB DDDD EEEE 2  BBBB DDDD AAAA 3  CCCC AAAA EEEE DDDD KKKKK 4  DDDD AAAA BBBB CCCC EEEE 5  EEEE AAAA CCCC KKKKK 尚、IDと紐付いているitem数は決まっていますが、買われるitemの種類は上記 の様にIDが1~5だけではなく、集計してみないと判らない状況です。 今の所、SQLはACCESS(2003)上にて手打ちしています。 以上、ご教示のほど、宜しくお願い致します。

  • Excel抽出のマクロかVBAを教えてください

    A列にxxxがあった場合、その上に存在するIDの値を抽出する方法を教えていただけますでしょうか? 例)xxxがあった場合、IDの値を抽出したい。 以下の場合、ID:1111とID:3333と表示したい。 (ID以降の値はランダムです) A列 ID:1111 aaaa bbbb cccc dddd eexxx ←xxxがあるのでその上のIDを抽出 ffffff ID:2222 aaaa bbbb cccc dddd eeee ffffff ID:3333 aaaa bbbb cccc dddd eexxx ←xxxがあるのでその上のIDを抽出 ffffff

  • Access Union について

    下記2テーブルがあります。 テーブル1 品番   1月合計 AAAA   1111 BBBB   2222 CCCC   1122 EEEE   3211 テーブル2 品番   2月合計 AAAA   1211 BBBB   3222 CCCC   1522 DDDD   2223 UNIONのSQL文で下記のような結果を得たいです。 品番   1月合計  2月合計 AAAA   1111    1211 BBBB   2222    3222 CCCC   1122    1522 DDDD         2223 EEEE   3211 SQL文をどのように書いたらいいですか。ご教授,お願い致します。

  • access で 方法を教えてください。

    access で 方法を教えてください。 テーブルは セミコロン区切りで、区切られて表示されています (テーブル例)  1 aaaa;bbbb;cccc;dddd;eeee;ffff 2000byte 2 aaaa 300byte 3 bbbb;cccc;ffff 3000byte 4 ffff;dddd 120byte このセミコロン区切りの区切られたデータの 「件数」と「バイト」を表で表示させる方法を教えて欲しいのです。 上記テーブル例を使用しての(抽出例)  抽出条件    ↓   aaaa 2件 2500byte   bbbb 2件 5000byte  cccc 2件 5000byte   dddd 2件 2120byte   eeee 1件 2000byte   ffff 3件 5120byte 宜しくお願いします。

  • wordの段落を通番で振りなおしたい

    word2003で段落を設定した文書があるんですが、番号を振りなおしてつけているため、以下のようになっております。 1.aaaa 2.bbbb 3.cccc 1.dddd 2.eeee 1.ffff 2.gggg 3.hhhh これを以下のような通しの段落番号に変換することは可能でしょうか? 1.aaaa 2.bbbb 3.cccc 4.dddd 5.eeee 6.ffff 7.gggg 8.hhhh 各段落の1.を”自動的に番号を振る”を選択すればできると思いますが、数が多いため簡単な方法を探しております。 よろしくお願いいたします。

専門家に質問してみよう