- ベストアンサー
EXCEL,セルから特定パターンの文字列を削除
A-1(商品名1(A)) A-2(商品名2(B)) A-3(商品名3(C)) ・ ・ ・ ・ となったリストがあります。 このリストから 商品名1(A) 商品名2(B) 商品名3(C) ・ ・ ・ ・ といったリストを作りたいのですが、いちいち打ち直すしかないでしょうか? 前後の( )も不要なのですが置き換えで削除してしまうと 商品名(A)の( )まで削除されてしまいます。 このリスト、数百行に及ぶもので困っています。 なにかいい方法はないでしょうか?
- みんなの回答 (8)
- 専門家の回答
質問者が選んだベストアンサー
A-1, A-2 などがどの行も同じ文字数か。(最初の(間での文字数) こういうことが、大切なことだと言う気が回らないのかな。 ーーー 例データ A列 B列 A-1(商品名1(A)) 商品名1(A) A-2(商品名2(B)) 商品名2(B) A-3(商品名3(C)) 商品名3(C) B列B1は =MID(A1,FIND("(",A1)+1,LEN(A1)-FIND("(",A1)-1) これで十分かどうか質問の、条件次第。 質問者の方でテストして、うまく行かない不備あらば補足。 (は全角か半角か注記が望ましい 上記は全角でテスト。
その他の回答 (7)
- xls88
- ベストアンサー率56% (669/1189)
商品という文字が固定なら (商品 を 商品 に置換 )) を ) に置換 マクロの例です。 Sub test1() Dim txt As String txt = ActiveCell.Value txt = Replace(txt, "(", "", , 1, vbTextCompare) txt = Replace(txt, ")", "", , 1, vbTextCompare) ActiveCell.Value = txt End Sub
- turuzou
- ベストアンサー率33% (15/45)
こんなのは如何でしょう? ()が全角の時 =SUBSTITUTE(RIGHT(A1,LEN(A1)-FIND("(",A1)),"))",")") ()が半角の時 =SUBSTITUTE(RIGHT(A1,LEN(A1)-FIND("(",A1)),"))",")") 下記を参考にしました。 エクセル技道場 > 関数 http://www2.odn.ne.jp/excel/waza/function.html の 全角/半角スペースで分けられた姓名から名前だけを取り出す http://www2.odn.ne.jp/excel/waza/function.html#SEC8
データが質問文のとおりなら、No.1の方の回答でいいはずですが、どうやら質問文以上にデータにバリエーションがあるようですね。 次の式を試してください。「A-1」の部分や「商品名」が何文字でもいいように作ってあります。また、念のため、「(」が全角でも半角でも大丈夫なようにしてあります。 =MID(A1,FIND("(",ASC(A1))+1,LEN(A1)-1-FIND("(",ASC(A1)))
- tom04
- ベストアンサー率49% (2537/5117)
こんにちは! 色々方法はあると思いますが・・・ 一例です。 A-2のような文字の並びはすべて同じとして、「2」が一桁の前提での回答になります。 無理やりって感じですが、 B1セル =SUBSTITUTE(SUBSTITUTE(A1,LEFT(A1,4),""),")","",2) としてオートフィルで下へコピー、 または、オートフィルマークの(+)のハンドルでダブルクリックしてみてください。 希望に近い形にならないでしょうか? 以上、参考になれば幸いですが、 的外れの回答なら無視してくださいね。m(__)m
A-1 の A や 1 が2文字以上になることがあるかもしれないので、 検索する文字列: *-*( 置換後の文字列: (指定せず) 検索する文字列: )) 置換後の文字列: ) でどうでしょう(2007)。
- KURUMITO
- ベストアンサー率42% (1835/4283)
B1セルに次の式を入力し、下方にオートフィルドラッグします。 =IF(A1="","",MID(A1,2,LEN(A1)-2)) 操作後にA列を削除しますとデータが消えてしまいますのでB列を選択してコピーし、A1セルをアクティブセルにしてから「形式を選択して貼り付け」で「値」にチェックをして貼り付けます。 その後にB列を削除してもよいでしょう。
- akiomyau
- ベストアンサー率43% (555/1280)
例えばA1にデータがあるとしてB1に以下のような式を入れます。 =MID(A1,5,LEN(A1)-5) あとは、式を下までコピーします。 元のデータを削除したいのあれば B列の範囲を指定してコピーで 形式を選択して貼り付けで値にして貼り付けます。 あとはA列を削除する形でどうでしょうか。
お礼
お早い回答ありがとうございます。 やってみたのですが Bのセルに (商品名1(A) (商品名2(B) (商品名3(C) ・ ・ ・ というように前のカッコが残ってしまいます。 どこを変更すればよいのでしょうか・・・?