• ベストアンサー

文字列の抽出を簡単にしたい

文字列から特定文字列を抜き出すには、  文字列の位置、文字列数を指定しなくてはいけません。  現在 「=MID(B4,$D$1,$D$2)」で処理していますが、   文字列の最初が左から何番目か?、文字列数はいくつか?  と目で見てカウントしてd1,d2を決定しています。  このカウントする過程は、正直厄介です。  この操作を簡単に行う方法は無いのでしょうか ?

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

  • ベストアンサー
  • kkkkkm
  • ベストアンサー率66% (1725/2595)
回答No.5

>  現代では、TVを見るにはTV付ける事が最初でどらま()を見ることができます。 > と()だけが残るので()を含めた(TV)を削除したいとのことです。 > > 最終形では、()を含めた(TV)を削除して >  現代では、TVを見るにはTV付ける事が最初でどらまを見ることができます。 No4で 現代では、TVを見るにはTV付ける事が最初でどらま(TV)を見ることができます。 ↓ 現代では、TVを見るにはTV付ける事が最初でどらまを見ることができます。 と修正する場合も挙げていますのでNo4の式でいけると思います。 ただ、No4の式は冗長だったような気もしますので =IF(ISERR(FIND("()",SUBSTITUTE(B4,A1,"",A2),1)),SUBSTITUTE(B4,A1,"",A2),SUBSTITUTE(SUBSTITUTE(B4,A1,"",A2),"()","")) もしくは =IF(ISERROR(FIND("()",SUBSTITUTE(B4,A1,"",A2),1)),SUBSTITUTE(B4,A1,"",A2),SUBSTITUTE(SUBSTITUTE(B4,A1,"",A2),"()","")) で試してみてください。

NuboChan
質問者

お礼

ありがとうございます。 教えていただいた、No5の式で()付きの処理も出来るように成りました。 改めてお礼申し上げます。 不手際が多くご迷惑をお掛けしましたが、  今回の件は、解決としたいと思います。 (しばらく試行錯誤して又改良箇所が出てきたら改めて相談せていただきます。)

その他の回答 (4)

  • kkkkkm
  • ベストアンサー率66% (1725/2595)
回答No.4

> ()を含めて削除したい場合は、何か方法がありますか ? 3番目のTVとして 現代では、TVを見るにはTV付ける事が最初でどらま(TV)を見ることができます。 ↓ 現代では、TVを見るにはTV付ける事が最初でどらまを見ることができます。 や 現代では、(TV)を見るには(TV)付ける事が最初でどらま(TV)を見ることができます。 ↓ 現代では、(TV)を見るには(TV)付ける事が最初でどらまを見ることができます。 のように修正したいのでしたら =IFERROR(IF(FIND("()",SUBSTITUTE(B4,A1,"",A2),1)>0,SUBSTITUTE(SUBSTITUTE(B4,A1,"",A2),"()",""),""),SUBSTITUTE(B4,A1,"",A2)) で試してみてください。 ちなみに質問に > 現在 「=MID(B4,$D$1,$D$2)」で処理していますが、 とあったのですがこれで$D$1,$D$2にどのような数値を入れたら 現代では、TVを見るにはTV付ける事が最初でどらまTVを見ることができます。 を 現代では、TVを見るにはTV付ける事が最初でどらまを見ることができます。 に修正できていたのでしょう。後学のために教えていただけますでしょうか。

NuboChan
質問者

お礼

すいません。補足で間違いがありました。 (それなら最初からA1=(TV)にすれば良いのでしょうが A=1,A=2がほしい場合があるので難しいです。) A2=1,A2=2の間違いです。 -----------------------------------   補足の訂正が出来ないので「お礼の入力」の方に    書き込みました。

NuboChan
質問者

補足

何度も回答いただき感謝します。 ()を含めて削除したい場合とは、 例えば、前回の例を参考にすれば、 B4=現代では、TVを見るにはTV付ける事が最初でどらま(TV)を見ることができます。  A1(指定文字列)=TV  A2(何番目) = 3 だとすれば、=SUBSTITUTE(B4,A1,"",A2)は  現代では、TVを見るにはTV付ける事が最初でどらま()を見ることができます。 と()だけが残るので()を含めた(TV)を削除したいとのことです。 最終形では、()を含めた(TV)を削除して  現代では、TVを見るにはTV付ける事が最初でどらまを見ることができます。 (それなら最初からA1=(TV)にすれば良いのでしょうが A=1,A=2がほしい場合があるので難しいです。) 簡単に()だけ削除するように列数を増やせば良いことなのですが。。。。 >=MID(B4,$D$1,$D$2) 例では、  現代では、TVを見るにはTV付ける事が最初でどらまTVを見ることができます。 左から文字数を一つずつ目で見てカウントしてTVが26文字目で文字数が2個なので  =mid(B4,26,2),それぞれの数値を専用のセルに指定。    D1=26、D2=2   =mid(B4,D1,D2) 結果としてTVが抜き出せて表示されるとの事で直接は   現代では、TVを見るにはTV付ける事が最初でどらまを見ることができます。 には変換できていません。 紛らわしい例を先に上げて混乱させて申し訳ないです。               

  • kkkkkm
  • ベストアンサー率66% (1725/2595)
回答No.3

> 同じ指定文字列でも3番めを指定しましたが1,2番目を採用する場合もあります。 > (又、指定文字列が存在しない場合もあります。) A1に指定文字列A2に何番目かが入力されているとして =SUBSTITUTE(B4,A1,"",A2) で試してみてください。 > TV - 現代では、TVを見るにはTV付ける事が最初でどらまを見ることができます。 =A1 & " - " & SUBSTITUTE(B4,A1,"",A2) で試してみてください。

NuboChan
質問者

お礼

ありがとうございます。 教えていただいた式で処理できるように成りました。 SUBSTITUTE関数は、置換対象(何番目か)を指定できるので大変便利ですね。 又、 置換文字列に””を指定できて  指定文字の削除にも利用できるのは、目からウロコでした。 処理していたら、  ()内の文字が削除対象になる場合が合ったのですが    ()を含めて削除したい場合は、何か方法がありますか ? ()だけ残っても見栄えが悪いので()を対象に  別に処理する事は出来そうなのですが、一度の処理で無理ですか ?

  • watanabe04
  • ベストアンサー率18% (295/1598)
回答No.2

=FIND(LEFT(E4274),"月火水木金土日") とおくとE4274の左1文字が何番目の曜日か探してくれます。

  • kkkkkm
  • ベストアンサー率66% (1725/2595)
回答No.1

A1に特定文字列が入っているとして =MID(B4,FIND($A$1,B4),LEN($A$1)) として試してみてください。

NuboChan
質問者

お礼

回答頂き感謝します。 説明不足で真意が伝わっていなかったので  詳しく説明したいと思います。 例えば、  現代では、TVを見るにはTV付ける事が最初でどらまTVを見ることができます。 で、TVが3箇所出てきますが最後のTVだけを削除したいとします。 他のセルに修正済みの、  現代では、TVを見るにはTV付ける事が最初でどらまを見ることができます。 例文では、 同じ指定文字列でも3番めを指定しましたが1,2番目を採用する場合もあります。 (又、指定文字列が存在しない場合もあります。) 分かりにくい説明ですが理解願えたでしょうか ? --------------------------- 最終的には先の修正済みのセル以外に、   削除文字を先頭にして 整形した形式のセルが必要な場合があります。 例文では、   TV - 現代では、TVを見るにはTV付ける事が最初でどらまを見ることができます。   

関連するQ&A