- ベストアンサー
エクセル 置換 特定文字だけ残したい
セルに長文が入っている場合に、()で囲まれた部分だけを残す、もしくは、別のセルに返したいのですが、このような操作は、置換で出来るのでしょうか? 具体的にはテキストで、10000文字以上ある文章から、複数個ある()内の部分を取り出したいと考えています。 宜しくお願いいたします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
簡単に結果を出したければ、まずとりあえず置換で )*( を )( にすべて置換すると 文章のアタマ部分(最初のカッコ)(次のカッコ)(続きのカッコ)文章の最後の部分 みたいに整形できます。 アタマ部分とおしり部分はまぁ置換とか使ってもできますが、さくっと手動で切除してください。 カッコ同士をさらに分割したければ、この後続けて「区切り位置」の機能を使い ) でセルに分割、 最後の仕上げで ( を 何も記入しない にすべて置換すれば、簡単に分割できます。
その他の回答 (3)
- MackyNo1
- ベストアンサー率53% (1521/2850)
基本的にはNo2の方の回答のワイルドカード置換を用いるのが最も簡単な操作だと思います。 データ範囲を選択し、Ctrl+Hで置換ダイアログを出して、検索する文字列に「)*(」置換後の文字列にスペースを入力し「すべて置換」します。 次に検索する文字列に「*(」、置換後の文字列には何も入力せず「すべて置換」します。 最後に、検索する文字列に「)*」、置換後の文字列には何も入力せず「すべて置換」します。 上記のようにして空白で区切られたデータセルを選択して「データ」「区切り位置」で「カンマやタブ・・・」にチェックが入っていることを確認して、「次へ」で区切り文字の「スペース」にチェックを入れ「完了」してください。
- mshr1962
- ベストアンサー率39% (7417/18945)
>具体的にはテキストで、10000文字以上ある文章から 上記がA1にあるとして ■"("の数を数えるのに A3=LEN($A$1)-LEN(SUBSTITUTE($A$1,"(","")) ■"("の数だけ抽出するのに A4=IF(ROW(A1)<=$A$3,MID(LEFT($A$1,FIND("|",SUBSTITUTE($A$1,")","|",ROW(A1)))-1),FIND("|",SUBSTITUTE($A$1,"(","|",ROW(A1)))+1,1000),"") この式を、下方に必要分コピーしてください。 ※"(" ")"の部分は全角文字でやってます。半角なら"(" ")"にしてください。 ※全角、半角が混在場合は、JIS関数を利用して、$A$1を全角にしてください A3=LEN(JIS($A$1))-LEN(SUBSTITUTE(JIS($A$1),"(","")) A4=IF(ROW(A1)<=$A$3,MID(LEFT($A$1,FIND("|",SUBSTITUTE(JIS($A$1),")","|",ROW(A1)))-1),FIND("|",SUBSTITUTE(JIS($A$1),"(","|",ROW(A1)))+1,1000),"") ※ROW(A1)のA1は1を抽出する為のものです。これは何番目の"()"内文字を抽出するかを指定しています。$は付けないでください。
お礼
ご回答ありがとうございます。 試してみましたが、修正を加えても、数式を返すことが出来ませんでした。 理屈としては、おおよそ理解できましたが、まだまだ勉強が足りないようです。 この問題については、改めて質問させていただくことにします。 親身になって回答くださりありがとうございました。
VBAでReplaceを使うとできるんじゃないかと思います。
お礼
みなさんご回答ありがとうございました。 問題は、セル内の文字数が多すぎて、すべての置換ができていなかったみたいです。 そこで、ワードに貼り付け、¥をつかうことで解決することが出来ました。 本当にありがとうございました。
補足
ありがとうございます。 素晴らしい回答だとわくわくしながらやってみたのですが、 なぜか、半分ぐらいの()が反応せず、削除されてしまいます。 文字が捉えられていないのかもしれませんので、 引き続き、その周辺の解決策を練ってみます。