特定のドメインをブロックするためにURLからドメインのみを抽出したい場面がありました。考えるのは面倒なのでエクセルの関数でいい感じにつくってくれるようにChatGPTにお願いしました。
URLからドメイン名のみを抽出する関数
=IF(ISNUMBER(SEARCH("/", MID(B2, SEARCH("//",B2) + 2, LEN(B2)))), MID(B2, SEARCH("//",B2) + 2, SEARCH("/", B2, SEARCH("//",B2) + 2) - SEARCH("//",B2) - 2), MID(B2, SEARCH("//",B2) + 2, LEN(B2)))
関数の解説
ChatGPTによる解説です。
まず、この関数はURLが「//」の後に「/」を含むかどうかを判断します。
ISNUMBER(SEARCH("/", MID(B2, SEARCH("//",B2) + 2, LEN(B2))))
「MID(B2, SEARCH("//",B2) + 2, LEN(B2))」の部分では、「//」の後からURLの最後までを抜き出しています。そしてその結果に対して、「/」があるかどうかを検索(SEARCH)します。存在すればその位置を数値で、存在しなければエラーを返します。その結果が数値(つまり「/」が存在する)かどうかを「ISNUMBER」で確認しています。
「/」が存在する場合
「/」が存在する場合(URLにサブディレクトリやファイルパスが存在する場合)は、ドメイン名を「//」の後から最初の「/」までの文字列として抽出します。
MID(B2, SEARCH("//",B2) + 2, SEARCH("/", B2, SEARCH("//",B2) + 2) - SEARCH("//",B2) - 2)
「//」の後から「/」までの文字列を取得して、それがドメイン名となります。
「/」が存在しない場合
一方、「/」が存在しない場合(URLがドメイン名だけの場合)は、ドメイン名を「//」の後からURLの最後までの文字列として抽出します。
MID(B2, SEARCH("//",B2) + 2, LEN(B2))
「//」の後からURLの最後までの文字列を取得して、それがドメイン名となります。
以上の流れでこの関数は動作します。つまり、「//」の後に「/」があるかどうかで、どの部分をドメイン名として抽出するかが変わります。
もっと簡単にURLからドメイン名のみを抽出する方法
ラッコツールズでテキストベースで貼り付けてもできました。