我现在已经在这里搜索和工作了几个小时。
我目前有一个将网址转换为域名(B列)的公式,但它无法处理诸如" co.uk"等域名。公式也不应该依赖于" www"或" http://"在TLD(.com,.co.uk等)之后没有任何信息
example.com会产生 example.com
test.example.com会产生 example.com
www.example.com会产生 example.com
example.co.uk导致 co.uk 这是错误的
www.example.ab.kr导致 ab.kr 这也是错误的
example.ab.kr导致 ab.kr 这也是错误的
目前的excel公式:
=SUBSTITUTE(TRIM(RIGHT(SUBSTITUTE(REPLACE(REPLACE(A1, 1, IFERROR(FIND("//", A1)+1, 0), TEXT(,))&"/", FIND("/", REPLACE(A1, 1, IFERROR(FIND("//", A1)+1, 0), TEXT(,))&"/"), LEN(A1), TEXT(,)), CHAR(46), REPT(CHAR(32), LEN(A1))), LEN(A1)*2)), CHAR(32), CHAR(46))
有没有人想过如何确保输出包含任何组合?正如我的名字所躲避;我很擅长并需要你的帮助:P
答案 0 :(得分:0)
没有详细说明:您所包含的功能的问题在于它删除了第二个句号("。",又称ASCII 46)左侧的任何文本。原始字符串。该函数假定URL中的第二个句点是域名结束位置的可靠指示(根据您提供的示例,显然不是这种情况)。
虽然我们可以尝试修改您的功能以处理此类情况,但我总是使用一种功能将网址剥离到域名:
=IF(ISNUMBER(FIND("www.",A1)),MID(A1,FIND("www.",A1)+4,IF(ISNUMBER(FIND("/",A1,9)),FIND("/",A1,9),LEN(A1)+1)-FIND("www.",A1)-4),MID(A1,FIND("//",A1)+2,IF(ISNUMBER(FIND("/",A1,9)),FIND("/",A1,9),LEN(A1)+1)-FIND("//",A1)-2))
(source)
上述功能确实有一个警告:原始网址必须包含" www。"或" //"。我发现的懒惰解决方法如下:
=IF(ISNUMBER(IFERROR(FIND("//", A2, 1), "X")), A2, "http://"&A2)
虽然它有点做作,但它应该可以正常工作,我有点害怕开始搞乱原来的功能。
答案 1 :(得分:0)
考虑以下用户定义函数:
Public Function domain(s As String) As String
Dim ss As String, pats(1 To 5) As String
Dim i As Long
pats(1) = "http://www."
pats(2) = "https://www."
pats(3) = "http://"
pats(4) = "https://"
pats(5) = "www."
ss = s
For i = 1 To 5
If InStr(1, ss, pats(i)) = 1 Then ss = Replace(ss, pats(i), "")
Next i
arr = Split(ss, "/")
domain = arr(0)
End Function