- ベストアンサー
エクセルのRIGHT関数の応用方法
- エクセルのRIGHT関数を使用して、URLのような文字列から指定した位置以降の文字列を抽出する方法について教えてください。
- 特定の文字列内で最後に現れる「/」以降の文字列を取得したい場合、RIGHT関数を利用することができます。
- RIGHT関数の引数には「セルの参照」と「取得する文字数」を指定します。セルの参照には抽出したい文字列が入っているセルを指定し、取得する文字数にはセルの参照の右から数えて何文字取得するかを指定します。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
No.3の方の答えに似てますが、Rightを使う前提で考えると 元の文字列のセルをA1とすると =RIGHT(A1,LEN(A1)-SEARCH("(^-^)",SUBSTITUTE(A1,"/","(^-^)",LEN(A1)-LEN(SUBSTITUTE(A1,"/",""))),1)) やってることを順番に書くと 1)LEN(A1)-LEN(SUBSTITUTE(A1,"/","") 区切りの文字 / を消し、元の文字列の文字数差を出す。※区切り文字個数が確定。 2)SUBSTITUTE(A1,"/","(^-^)",<区切り文字の個数>) 元の文字列の最後の区切り文字を、通常文字列に出現しない文字列に置き換える。※例では顔文字(^-^) 3)LEN(A1)-SEARCH("(^-^)",<最後の区切り文字を(^-^)に置き換えた文字列>,1)) (^-^)の出現位置を調べ、ここより前は不要なので、元の文字列の文字数との差を出す。※右から切り出す文字数が確定 4)RIGHT(A1,<右から切り出す文字数>) 抽出完了。
その他の回答 (3)
- keithin
- ベストアンサー率66% (5278/7941)
>一番右(最後)のスラッシュより右側 その通りに計算すると =IF(ISNUMBER(FIND("/",A1)),MID(A1,FIND("\\\",SUBSTITUTE(A1,"/","\\\",LEN(A1)-LEN(SUBSTITUTE(A1,"/",""))))+1,99),"") とか =MID(A1,MAX(IF(MID(A1,ROW($A$1:$A$999),1)="/",ROW($A$1:$A$999)))+1,99) と記入して、こちらは必ずコントロールキーとシフトキーを押しながらEnterで入力するとか。
お礼
まさにやりたかったことを端的に示していただき有難うございました! 正直なところ、複合している関数の一つ一つをまだ理解し切れておらず、結果だけ見て喜んでいるところもありますが、噛み砕いて応用する機会を、今後増やしたいと思います。 配列数式についても同様ですね。 (まだまだだなぁ・・・)
- tsubuyuki
- ベストアンサー率45% (699/1545)
例があまりよろしくないような気もしてしまうのですが。 > ⇒「index01.html」のみを抽出したい > ⇒「index02.html」のみを抽出したい > ⇒「index03.html」のみを抽出したい 抽出したい文字数が全て同じ(11文字)ですから、 素直に(元のURLがA1セルにあるとしたら =RIGHT(A1,11) で事足りますね。 まぁ、これだけでは面白くないので、 この「文字数」が不定であるとして、考え方の一例を。 添付図の通りです。 元の「URL」が、A1:A3にあるとして、まずはその範囲を選択しておきます。 リボンの「データ」タブ⇒「区切り位置」をクリック。 ※2003以前なら「データ」メニュー⇒「区切り位置」をクリック。 質問の際は使っている「ヴァージョン」を書いておくと良いですよ。 ウィザードが走りますので、 ・1/3・・カンマやタブなどの~~ を選択して次へ ・2/3・・「その他」にチェック、隣のインプットボックスに「/」を入力、次へ ・3/3・・上書きしていいならそのまま完了。 図のように他のセルに置きたいなら、表示先を指定(A6)し完了。 A11セルに以下の式 =OFFSET(A6,0,COUNTA(6:6)) を入力して、必要分コピー貼り付けして完成。 機能の詳細・関数については別途お調べくださいませ。 ちなみに、この作業が「今後もちょこちょこ発生する作業」であるなら、 VBAを扱えるようになってユーザー定義関数でも作っておけば早いですよ。 一回作ればあとは式一発でできますから。
お礼
コメント有難うございます。 まさにご指摘いただいた通り、例が悪かったです。文字数が不定のことを想定した回答をいただきたかったので、例示いただいた解決方法とても助かりました。 OFFSET関数はこれまで活用したことがなかったですが、これから活用の度合いが増えそうです。
- Cupper-2
- ベストアンサー率29% (1342/4565)
"/index"の文字列が、左から何番目にあるかを検索… これで良いかな?
お礼
最初にご回答いただき有難うございます。コメントいただいた通りです。 (最後のスラッシュ以降の文字数が一定数でなく、各セルごとに文字数をカウントし抽出したいと思っていましたが、別の方からご指摘いただいたように、質問での書き方が不十分でした・・・)
お礼
質問で言及したRight関数を前提に考えていただき、また関数の中身を噛み砕いて説明いただき、本当に助かります。結果もバッチリでした! 悲しいかな、現在は結果だけで喜んでいますが、ご説明いただいた内容を必ずやものにして、今後他にも応用できるようにしたいものです。有難うございました!