• ベストアンサー

EXCEL,セルから特定パターンの文字列を削除

A-1(商品名1(A)) A-2(商品名2(B)) A-3(商品名3(C)) ・ ・ ・ ・ となったリストがあります。 このリストから 商品名1(A) 商品名2(B) 商品名3(C) ・ ・ ・ ・ といったリストを作りたいのですが、いちいち打ち直すしかないでしょうか? 前後の( )も不要なのですが置き換えで削除してしまうと 商品名(A)の( )まで削除されてしまいます。 このリスト、数百行に及ぶもので困っています。 なにかいい方法はないでしょうか?

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.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)
回答No.7

商品という文字が固定なら (商品 を 商品 に置換 )) を ) に置換 マクロの例です。 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)
回答No.6

こんなのは如何でしょう? ()が全角の時 =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

noname#99913
noname#99913
回答No.5

データが質問文のとおりなら、No.1の方の回答でいいはずですが、どうやら質問文以上にデータにバリエーションがあるようですね。 次の式を試してください。「A-1」の部分や「商品名」が何文字でもいいように作ってあります。また、念のため、「(」が全角でも半角でも大丈夫なようにしてあります。 =MID(A1,FIND("(",ASC(A1))+1,LEN(A1)-1-FIND("(",ASC(A1)))

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.4

こんにちは! 色々方法はあると思いますが・・・ 一例です。 A-2のような文字の並びはすべて同じとして、「2」が一桁の前提での回答になります。 無理やりって感じですが、 B1セル =SUBSTITUTE(SUBSTITUTE(A1,LEFT(A1,4),""),")","",2) としてオートフィルで下へコピー、 または、オートフィルマークの(+)のハンドルでダブルクリックしてみてください。 希望に近い形にならないでしょうか? 以上、参考になれば幸いですが、 的外れの回答なら無視してくださいね。m(__)m

noname#96417
noname#96417
回答No.3

A-1 の A や 1 が2文字以上になることがあるかもしれないので、 検索する文字列: *-*( 置換後の文字列: (指定せず) 検索する文字列: )) 置換後の文字列: ) でどうでしょう(2007)。

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.2

B1セルに次の式を入力し、下方にオートフィルドラッグします。 =IF(A1="","",MID(A1,2,LEN(A1)-2)) 操作後にA列を削除しますとデータが消えてしまいますのでB列を選択してコピーし、A1セルをアクティブセルにしてから「形式を選択して貼り付け」で「値」にチェックをして貼り付けます。 その後にB列を削除してもよいでしょう。

  • akiomyau
  • ベストアンサー率43% (555/1280)
回答No.1

例えばA1にデータがあるとしてB1に以下のような式を入れます。 =MID(A1,5,LEN(A1)-5) あとは、式を下までコピーします。 元のデータを削除したいのあれば B列の範囲を指定してコピーで 形式を選択して貼り付けで値にして貼り付けます。 あとはA列を削除する形でどうでしょうか。

deathows
質問者

お礼

お早い回答ありがとうございます。 やってみたのですが Bのセルに (商品名1(A) (商品名2(B) (商品名3(C) ・ ・ ・ というように前のカッコが残ってしまいます。 どこを変更すればよいのでしょうか・・・?