- ベストアンサー
エクセルのセル内の文字列からURLとサイト名を抽出したい方法
- エクセルのセル内には、<a href="http://URL/" target="_blank">サイト名</a>という形式の文字列があります。これからURLとサイト名をそれぞれ抽出したい場合、左から9文字を削った後、SUBSTITUTE関数を使って不要な部分を置換する方法があります。
- 具体的には、B列には以下の式を入力します。=SUBSTITUTE(A1, LEFT(A1, 9), "") これにより、URL部分以降の" target="_blank">サイト名</a>"が削除されます。そして、C列にはA列のデータがそのまま表示されます。
- ただし、URLはセルごとに文字数が異なる可能性があるため、一括でURLとサイト名を抽出するためには、VBA(Visual Basic for Applications)を使用する必要があります。VBAを使うと、マクロを作成してセルの内容を一括処理することができます。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
B1: =MID(A1,10,FIND("target=",A1)-12) C1: =MID(A1,FIND(">",A1)+1,FIND("</",A1)-FIND(">",A1)-1)
その他の回答 (4)
- MackyNo1
- ベストアンサー率53% (1521/2850)
例示のデータのケースなら、単純なワイルドカード置換をするのが簡単だと思います。 元データをコピーし、そのデータ範囲を選択して(貼り付けた状態のまま)、Ctrl+Hで置換ダイアログを出し サイト名を抽出するなら、検索する文字列に「<*>」置換後の文字列に何も入力ぜず「すべて置換」します。 URL部分を抽出するなら、同様に検索する文字列に「<*"」で「すべて置換」してから、そのままもう一度、検索する文字列に「"*」と入力して「すべて置換」してください。
お礼
ご回答ありがとうございました。 無事解決しました。
- imogasi
- ベストアンサー率27% (4737/17069)
データの始と終わりの条件をどう規定したら良いか、考えましたか。 それはわかったにしても、エクセルのFIND関数程度では実現が難しいことだと思う。 可変部分を抜き出すなら質問のようなのはダメは、始から判る。 (1)//の次から初めて (2)/の手前で終わる 部分の文字列を抜き出すで、質問者の場合は、ニーズが合うのか。 そこを明確にして質問するもんだ。 ーー データ例を誤解していたら、下記は約にたたず、無視して。 例データ A列 現データ F,Gは,説明のための作業列 H列は結果 <a href="http://URL/" target="_blank"> 15 4 URL <a href="http://aaa.bbbb/" target="_blank"> 15 9 aaa.bbbb <a href="http://aa.cc.ddd/" target="_blank"> 15 10 aa.cc.ddd <a href="http://aaas/" target="_blank"> 15 5 aaas F1の式は =FIND("//",A1) 下方向に式を複写する G1の式は =FIND("/",MID(A1,F1+2,20)) 下方向に式を複写する H1の式は =MID(A1,F1+2,G1-1) 下方向に式を複写する 解説のためF,G,H列になっているが、H列の式で、F,Gの関数を組み込んでおく変えてください。 意味はF1は//が見つかる位置(何文字目) G1は//の位置の2文字先から/の位置を求める。
補足
ご回答ありがとうございました。 無事解決しました。
- lostkid
- ベストアンサー率42% (27/64)
ちょっと格好悪いですが、 B列に、=MID(A1,FIND("""",A1)+1,LEN(A1)) C列に、=LEFT(B1,FIND("""",B1)-1 ) D列に、=MID(B1,FIND("blank""",B1)+LEN("blank""")+1,LEN(B1)) E列に、=SUBSTITUTE(D1,"</a>","") C列がURL E列がサイト名 ※テキストエディタにコピペして、ワイルドカードで置換すると早いです。
お礼
ご回答ありがとうございました。 無事解決しました。
- aokii
- ベストアンサー率23% (5210/22062)
文字列の規則性がよくわかりませんが、以下の方法でいかがでしょう。 B1に =MID(A1,FIND("http:",A1,1),FIND(" target=",A1,1)-FIND("http:",A1,1)-1) C1に =MID(A1,FIND(" target=",A1,1)+17,FIND("</a>",A1,1)-FIND(" target=",A1,1)-17)
お礼
ご回答ありがとうございました。 無事解決しました。 とても助かりました!
お礼
ご回答ありがとうございました。 無事解決しました。 とても助かりました。