「これいらなくない?」という慣習、教えてください

テキストファイルから文字列をエクセルに貼りつけ、ある条件の単語のみを抽出する関数について教えてください。

(1)あらゆる文字・記号で構成されている文章のうち、” ”(二重引用符)で囲まれた中のその文字列だけを抽出するには、どのような関数があるのでしょうか。


(2)ある文章は、
(文字数はバラバラの文章).1-文章.doc、
(文字数はバラバラの文章).2-文章.doc、 
・・・
となっているテキストがあるのですが、そのテキストのうち、「数字ー」の形式は同じなのですが、その「(数字)‐」以降「.doc」までの文章のみ抽出するには、どのような関数になるのでしょうか。

マクロは組めませんので、関数で教えて頂ければ幸いです。

宜しくお願いします。

A 回答 (6件)

 今仮に、元の文字列がA1セルに入力されているものとします。



(1)
 次の数式は、" "で囲まれている箇所が、必ず1箇所のみである場合に対応する数式です。
 尚、" "で囲まれている箇所が、複数箇所存在する場合には、最初に現れた" "で囲まれている箇所の内側部分のみが抽出されます。
 又、" "で囲まれている箇所が存在しない場合には、何も表示されません。

=IF(LEN(A1)-LEN(SUBSTITUTE(A1,"""",))=2,MID(A1,FIND("""",A1)+1,FIND("""",SUBSTITUTE(A1,"""",,1))-FIND("""",A1)),"")


(2)
 次の数式は、「-」と「.doc」が必ず1回ずつしか現れない場合に対応する数式です。
 尚、「-」や「.doc」が複数存在する場合には、最初に現れた方の「-」と、最初に現れた方の「.doc」に挟まれた部分が抽出されます。
 又、「-」か「.doc」の何れかが文字列中に無い場合や、
「.doc」が先で、「-」が後になっていて、「.doc」よりも前の部分には、「-」が無い場合には、何も表示されません。

=IF(ISNUMBER(FIND(".doc",A1,FIND("-",A1))),MID(A1,FIND("-",A1)+1,FIND(".doc",A1)-FIND("-",A1)-1),"")

 それからもし、「-」が複数存在する場合には、次の様な数式とすれば、最後に「-」が現れる部分と、最初に現れた方の「.doc」に挟まれた部分が抽出されます。
 こちらの数式も、「.doc」が複数存在する場合には対応しておりませんが、対応する関数を新たに組む事は可能ですから、その必要がある場合には、補足等でお知らせ願います。

=IF(ISNUMBER(FIND(".doc",A1,FIND("-",A1))),MID(A1,FIND("゛゜",SUBSTITUTE(A1,"-","゛゜",LEN(A1)-LEN(SUBSTITUTE(A1,"-",))))+1,FIND(".doc",A1)-FIND("゛゜",SUBSTITUTE(A1,"-","゛゜",LEN(A1)-LEN(SUBSTITUTE(A1,"-",))))-1),"")

 尚、最後に現れた「-」の位置ではなく、どうしても、数字+「-」の条件に合致する「-」の位置でなければならない場合でも、(確認してはおりませんが)おそらく抽出する関数を組む事も、一応は可能だと思いますから、その必要がある場合には、補足等でお知らせ願います。
 但し、数字+「-」の条件に合致する「-」の位置でなければならない場合には、非常に複雑で長い関数になる筈ですし、Excel2007よりも前のバージョンでは、もしかすると、ネストのレベル制限に引っ掛かるかも知れません。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
無事に抽出することができました。

-の数による、別の抽出方法のご提案など、実は当てはまるところがあり、大変助かりました。

ありがとうございました。

お礼日時:2011/04/05 21:27

[No.2補足]への回答、



》 <DDD="0.2572130370637403">\\1.1.1.1\1-あいうえお.doc の中
》 から、…、""内の数値のみの抽出

=MID(A1,FIND("_",SUBSTITUTE(A1,"""","_"))+1,FIND("_",SUBSTITUTE(A1,"""","_",2))-FIND("_",SUBSTITUTE(A1,"""","_"))-1)
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
無事に抽出することができました。

お礼日時:2011/04/05 21:23

質問があいまいな点が多い。


補足のこと。
>テキストファイルから文字列をエクセルに貼りつけ
エクセルに・・・とはどのセルはどうなっているのか、具体的に実例を挙げること。
ただ貼り付けただけでは、そのままで良い場合とそうでない場合がある。データー区切り位置・・の操作をやってセルに分離すべき場合があるのだ。
>ある条件の単語のみを
条件の、とは何。持って回った言い方だが実例を挙げて質問に書くべき。
文章が、ある単語を含む場合に、その全体を抽出するのか。
文章というのは、どう区切られるのか。
(2)は(1)の詳細説明のつもりか、別内容の質問か。
DOCはワード文章だが、それをコピーしてエクセルシートに貼り付けるのか
表題的にXXX.docとなった文章がメモ帳などで読める文書であるのか?
質問に1文章ぐら全文書例を挙げて説明のこと。
抜き出し該当内容は、数字ーということは、何でも数字は該当するのか、指定の数字なのか?
ーー
エクセルの関数で、数字(続いた数字文字列の塊)の始まる位置や終わる位置を見つけるのは難しい関数になる。
http://www.geocities.jp/chiquilin_site/data/0502 …
ーーー
数字(続いた数字文字列の塊)の始まる位置や終わる位置を見つけるのは、VBAでも1文字ずつ判断して探すのだろうと思う。
ーー
ハイフンが必ずあり(その後の文章にないなら)ハイフン1文字を目安にするほうがやさしい。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
無事に抽出することができました。

質問があいまいな為、ご迷惑をおかけしました。

お礼日時:2011/04/05 21:25

>半角の""に囲まれた



=REPLACE(REPLACE(A1,FIND("""",A1&"""",FIND("""",A1&"""")+1),999,""),1,FIND("""",A1&""""),"")


>…数字-文章.docの文章

=SUBSTITUTE(REPLACE(A1,1,MIN(SEARCH({0,1,2,3,4,5,6,7,8,9}&"-",A1&"1-2-3-4-5-6-7-8-9-0-")+1),""),".doc","")
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
無事に抽出することができました。

お礼日時:2011/04/05 21:25

「二重引用符で囲まれた」の「二重引用符」にも幾つか種類があります。


次のどれに該当しますか?

1.左側も右側も半角文字の「"」(34)
   使用例: "文字列"
2.左側も右側も全角文字の「”」(8521)
   使用例: ”文字列”
3.左側も右側も全角文字の「“」(8520)
   使用例: “文字列“
4.左側が「“」(8520)で右側が「”」(8521)
   使用例: “文字列”

【注】
左右で全半角混在は無いものとします。
上に示した 34、8520、8521 の数値は、ASIIコードまたは JISコードを意味しています。Excel の =CODE()関数で得られる数値です。

この回答への補足

ご質問の件ですが、1番の左右とも半角の"" です。
一例ですが、 <DDD="0.2572130370637403">\\1.1.1.1\1-あいうえお.doc
の中から、

私の質問の1 については、""内の数値のみの抽出、2については、別の列で、あいうえお 部分のみ抽出をしたいと考えております。2については、-文章.docという構成は同じです。

アドバイスのほど、宜しくお願いします。

補足日時:2011/04/04 23:06
    • good
    • 0

A1セルにそれらの言葉が入っているとして。




>” ”(二重引用符)で囲まれた中

ご質問に書かれているとおりに「全角文字の””」で囲われている場合
=REPLACE(REPLACE(A1,FIND("”"",A1&"”"",FIND("”"",A1&"”"")+1),999,""),1,FIND("”"",A1&"”""),"")

実は本当は「半角文字の""」だった場合
=REPLACE(REPLACE(A1,FIND("""",A1&"""",FIND("""",A1&"""")+1),999,""),1,FIND("""",A1&""""),"")


>数字-文章.doc

=REPLACE(A1,1,MIN(SEARCH(JIS({0,1,2,3,4,5,6,7,8,9}),JIS(A1)&JIS(1234567890))-1),"")

こちらも寄せられた回答の式によっては,半角の数字なのか全角の数字なのかを区別する場合があります。
本当のあなたのデータがどうなっているのかキチンと確認して,寄せられた皆さんのアドバイスをしっかり試してから,良い結果が得られる数式を使う必要があります。
    • good
    • 0
この回答へのお礼

早々にご回答頂き大変ありがとうございます。
無事に抽出することができました。

お礼日時:2011/04/05 21:28

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報