• 締切済み

タグの間の文字のみを表示したい

Excelの文字列操作で良い関数があれば教えてください。 例:A1セル:<abc>あいうえお</abc> A2セルにあいうえおのみを表示したいです。

みんなの回答

  • kouji_124
  • ベストアンサー率46% (283/605)
回答No.2

関数だけでやると、ちょっと複雑になりますが以下の式で出来ます。 =MID(A1,FIND(">",A1,1)+1,FIND("<",A1,2)-1-FIND(">",A1,1)) 関数の説明をしますと、[MID(文字列,開始位置,文字数)]は指定した「文字列」の「開始位置」から「文字数」分の文字列を抜き出します。 [FIND(検索文字列,対象,開始位置)]は、「対象」の文字列の「開始位置」以降に一致した「検索文字列」の位置を返します。 詳細を説明をしますと、先ず特定の文字列から一部分を抜き出したいので「MID関数」を使いますが、「文字列」の部分は元となる文字列なので「A1」を指定します。 「開始位置」は、タグの">"の後からにしたいので「FIND関数」を使い">"の位置を探しその1文字後と言う事で[FIND(">",A1,1)+1]とします。 「文字数」は">"と"<"の間の文字数を割り出せばよい訳ですから、先ず"<"の前迄の文字数を割り出したいので「FIND("<",A1,2)-1」とします。 この時、"<"は文字列の先頭にも存在するので「開始位置」を「2」として2文字目から検索する事によって先頭の"<"を無視します。 また、「FIND関数」の結果から「-1」することで"<"の前の位置がわかります。 次に、前半部分の削りたい文字数は、「開始位置」と同じ様に">"を探せばよいので「FIND(">",A1,1)」とします。 二つの式の引き算により「文字数」が求められるので[FIND("<",A1,2)-1-FIND(">",A1,1)]となります。

micchy1974
質問者

お礼

丁寧にご説明下さいましてありがとうございます。 上記方法でもやってみます。

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

エクセル関数には、2つの文字列を指定して、その間の文字列を取る関数は存在しない。関数を組み合わせるほか無い。 ある文字列の出現位置はFind関数でわかる。ですから2つの文字列の 出現位置(何文字目か)を出して、両者の差が文字列長になるので、 一方1つの文字列の先頭と文字列長で文字列を抜き出す関数Midがあるのでそれを使う。 両者ともエクセル関数で文字列を扱う関数でベスト2、3に入る有名な関数です。 ーーー A2セルにデータがあるとして =MID(A2,FIND("<abc>",A2)+5,FIND("</abc>",A2)-FIND("<abc>",A2)-5) タグらしいものの、前後関係、存在関係は異常な例は無いものと仮定している。 ーー 本当はVBAでも、同じような考えになるが、別に正規表現という考えが 在って、そのオブジェクト(プログラム)を使えば、正面からとりあげられるようになる。 HTML文など扱おうと思えば、上記関数では処理しきれないだろう。

micchy1974
質問者

お礼

上記関数でうまくいきました。 本当にありがとうございました。

関連するQ&A