
URLのような文字列で、複数の「/」(スラッシュ)が含まれる場合、一番右(最後)のスラッシュより右側の文字列のみを抽出したいときは、どのような関数を記述すれば良いか、を是非お教えください。
http://www.abc.com/aaa/index01.html
⇒「index01.html」のみを抽出したい
http://www.abc.com/aaa/bbb/index02.html
⇒「index02.html」のみを抽出したい
http://www.abc.com/aaa/bbb/ccc/index03.html
⇒「index03.html」のみを抽出したい
※もし、RIGHT関数を使う方法でない場合は、その旨ご教示いただけると助かります。
どうか宜しくお願いいたします。
No.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,<右から切り出す文字数>)
抽出完了。
質問で言及したRight関数を前提に考えていただき、また関数の中身を噛み砕いて説明いただき、本当に助かります。結果もバッチリでした!
悲しいかな、現在は結果だけで喜んでいますが、ご説明いただいた内容を必ずやものにして、今後他にも応用できるようにしたいものです。有難うございました!
No.3
- 回答日時:
>一番右(最後)のスラッシュより右側
その通りに計算すると
=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で入力するとか。
まさにやりたかったことを端的に示していただき有難うございました!
正直なところ、複合している関数の一つ一つをまだ理解し切れておらず、結果だけ見て喜んでいるところもありますが、噛み砕いて応用する機会を、今後増やしたいと思います。
配列数式についても同様ですね。
(まだまだだなぁ・・・)
No.2
- 回答日時:
例があまりよろしくないような気もしてしまうのですが。
> ⇒「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関数はこれまで活用したことがなかったですが、これから活用の度合いが増えそうです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(データベース) カラム上の重複を削除するクエリを教えてください 3 2022/04/12 14:11
- Excel(エクセル) エクセルでエラーを無視して一番左側のセルの値を返したい 2 2023/07/27 13:06
- Visual Basic(VBA) Excel VBAでAA(BBB) → BBB.AA に置換したい 2 2022/10/30 13:59
- Visual Basic(VBA) サブフォルダ(データ)にある複数の.xlsxファイルのSheet3のA2セルの値で01から左側をB2 2 2022/08/14 15:46
- Excel(エクセル) ¥マークを含むパスの処理について(マクロ、または関数) 2 2022/12/25 02:11
- その他(プログラミング・Web制作) python pandas 行ごとに列名(列番号)を指定して抽出したい 1 2023/05/26 13:47
- Excel(エクセル) INDEX関数とMATCH関数を使用し値を返す数式についてです 2 2022/04/20 13:40
- Visual Basic(VBA) 集めたシートのシート名を変更したい。 下記のコードでサブフォルダにあるファイルのSheet3を集めて 6 2022/08/23 10:38
- Excel(エクセル) エクセルでINDEXとMACTHで出てきたデータの数を数えるには? 1 2023/04/25 10:21
- Excel(エクセル) 列の複数ある空白セルを飛ばして、セルに並べて表示したい 3 2023/02/12 16:49
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
9月17日でサービス終了らし...
-
エクセル ドロップダウンリスト...
-
特定のセルだけ結果がおかしい...
-
エクセルのdatedif関数を使って...
-
【関数】同じ関数なのに、エラ...
-
エクセルの循環参照、?
-
エクセル
-
【マクロ】アクティブセルの時...
-
【マクロ】A列にある、日付(本...
-
iPhoneのExcelアプリで、別のシ...
-
【マクロ】3行に上から下に並...
-
【条件付き書式】シートの中で...
-
【マクロ】EXCELで読込したCSV...
-
【エクセル】期限アラートについて
-
【マクロ】列を折りたたみ非表...
-
【マクロ】WEBシステムから保存...
-
【マクロ】オートフィルターの...
-
Excel 複数のセルが一致すると...
-
エクセルに、105と入力すると、...
-
3〜400人分のデータをExcelで管...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelファイルを開くと私だけVA...
-
エクセルについてどう関数を使...
-
マクロ・VBAで、当該ファイルの...
-
エクセルのセルに画像は埋め込...
-
エクセルで、一部のセルだけ固...
-
【マクロ、画像あり】A表かB表...
-
エクセルでカウントする
-
【マクロ】コードを少しでも、...
-
VBA_日時のソート
-
エクセルで教えてください。 例...
-
エクセル 月間シフト表で曜日ご...
-
セルの左に余白を付ける
-
エクセル
-
エクセルについて教えてください
-
2枚のエクセル表で数字をマッチ...
-
ExcelのIF関数との組み合わせの...
-
エクセルのファイルのコピーを...
-
エクセルで二つのブックの違い...
-
空白処理を空白に
-
Excelのチェックボックスについ...
おすすめ情報