ジョーダンは、URLをそのコンポーネントに分解する必要があります。完全なURL(http://www.xyz.com/business)が列Aにある場合、彼はメインドメイン(xyzまたはxyz.com)を列Bに、パス(business)を列に含める方法を望んでいます。 C.

この問題を解決するには、複数の方法があります。これを1、2回だけ行う必要がある場合は、リボンの[データ]タブにある[テキストから列へ]ツールを使用するのが最も簡単な場合があります。ツールで文字列を引き離す方法を指定するときは、区切り文字としてスラッシュ(/)を使用することを指定します。元のURLをまとめる方法によっては、これには少しの「クリーンアップ」が必要になる場合があります

ツールが完成した後ですが、それは迅速かつ簡単です。

これをより頻繁に行う場合は、数式を使用してURLを操作することでメリットが得られる可能性があります。最初のタスクはURLからドメインをプルすることですが、これは思ったより少し難しいです。たとえば、URLは任意の数のプロトコル指定子(http://、https://、ftp://など)で始まる場合もあれば、プロトコル指定子でまったく始まらない場合もあります。さらに、「www」を削除することもできます。

一部の人々はそれを無関係と考えるので、命名法。 「実際の」ドメインがどこから始まるかを理解するには、列Bで次の式を使用できます。

=IFERROR(FIND("www.",$A1)+4,IFERROR(FIND("://",$A1,1)+3,1))

利用可能な場合、「www。」の後の最初の文字の位置を返すために何をしますか。存在しない場合は、「://」の後の最初の文字の位置を返します(存在する場合)。それがない場合、URLにはプロトコルプレフィックスまたはwwwが含まれていないため、番号1が返されます。

列Bのその値を使用して、必要なパーツを実際に引き出し始めることができます。すでに説明したように、列Cに配置された以下は、ドメインを返します。基本的に、列Bに示されている文字位置から次のスラッシュ(/)までのすべてを返します。

=MID(A1,B1,IFERROR(FIND("/",A1,B1)-B1,LEN(A1))

元のURLに「www.xyz.com」が含まれている場合、「xyz.com」は式によって返されます。 「www」以外の別のサブドメインが含まれている場合

(「research.xyz.com」など)、サブドメインを含む完全なドメインが返されます。ドメイン名の後にスラッシュ(/)がない場合に備えて、IFERROR関数が含まれています。 (FIND関数は、探しているアイテムが見つからない場合、#VALUEエラーを返します。)

ドメインの後のパスを選択するには、列Dで次の式を使用できます。

=IFERROR(MID(A1,FIND("/",A1,B1)+1,LEN(A1)),"")

この数式は、ドメイン名の後にある最初のスラッシュ(/)の後のすべてを返します。ドメイン名の後にスラッシュがない場合は、何も返しません。 (これも、IFERROR関数の使用のおかげです。)

上記の数式を使用するための鍵は、やはり列Bのヘルパー列です。列Bの必要性をなくしたい場合は、他の2つの数式で、B1のすべてのインスタンスを数式に置き換える必要があります( B1に属する等号)。もちろん、これにより、他の2つの数式、特に列Cに記載されている数式が非常に長くなります。

必要に応じて、ヘルパー列を必要とせずに、基本的に同じことを行うマクロを作成できます。次の例では、選択を行ってから、URLの一部をセルから引き出し、選択の右側の2つの列に配置することを想定しています。

Sub GetURLParts()

Dim c As Range     Dim sRaw As String     Dim J As Integer          For Each c In Selection         sRaw = c.Text         J = InStr(sRaw, "://")

If J > 0 Then sRaw = Mid(sRaw, J + 3)

If LCase(Left(sRaw, 4)) = "www." Then             sRaw = Mid(sRaw, 5)

End If         J = InStr(sRaw, "/")

If J > 0 Then             c.Offset(0, 1) = Left(sRaw, J - 1)

c.Offset(0, 2) = Mid(sRaw, J + 1)

Else             c.Offset(0, 1) = sRaw             c.Offset(0, 2) = ""

End If     Next c End Sub

注:

このページ(または_ExcelTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。

_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。

このヒント(13320)は、Microsoft Excel 2007、2010、2013、2016、2019、およびOffice365のExcelに適用されます。