我有一个包含超链接公式的列,例如:
=HYPERLINK("http://example.com", "Link")
我想获得额外的列,其中只有第一列中的url(作为文本),即在此示例中:
http://example.com
是否有允许从HYPERLINK中提取网址的功能?我还在考虑从第一列获取公式文本并在最后一列中使用SPLIT / SUBSTITUTE剪切它,但我不确定是否可以将一个字段代码放入另一个字段。
答案 0 :(得分:1)
您可以使用Google Apps Script以及宏,菜单和自定义函数的组合来从单元格的公式中提取超链接的值。
以下是它的工作原理:
Code.gs
Code.gs
中的所有内容替换为this Pastebin中取自this Google Docs Help Forum
topic =HYPERLINK
函数Extract -> Replace formulas with Text strings
启动脚本宏将以递归方式提取超链接函数的URL,只留下值。
注意:在进行任何更改之前,请务必备份您的工作。
如果您希望保留原始单元格的内容或格式,我建议您在重复的电子表格或至少原始单元格的副本上执行此任务,以防出现任何错误。
答案 1 :(得分:1)
您可以使用Apps脚本创建自定义功能。试试这个:
在 Code.gs 中,粘贴以下内容并保存:
function EXTRACT_URL(input) {
var range = SpreadsheetApp.getActiveSheet().getRange(input);
var re = /^.+?\(\"(.+?)\",.+?$/;
if (input.indexOf(':') != -1) {
var formulas = range.getFormulas();
for (var i in formulas) {
for (var j in formulas[i]) {
formulas[i][j] = formulas[i][j].replace(re, "$1");
}
}
return formulas;
} else {
return range.getFormula().replace(re, "$1");
}
}
这会创建一个自定义函数。在您的Google表格中,您可以像使用任何其他功能一样使用此功能;但是,有一点需要注意,那就是你必须把单元格放在引号中,例如:
=EXTRACT_URL("A1")
为了使引号不那么麻烦,上面的脚本也支持范围:
=EXTRACT_URL("A1:B10")
希望这有帮助!
答案 2 :(得分:0)
一种方法是复制包含公式的列(假设您要保留它们)并删除“多余”。可以使用Edit>实现删除。查找和替换...在每种情况下使用替换为左侧空白:
左侧部分:
查找 =HYPERLINK("
并检查还在公式中搜索
(如果您想断开链接,请将'
放入*替换为*。)
右边的部分:
查找 ".+
并检查使用正则表达式搜索和还在公式中搜索。
答案 3 :(得分:0)
尝试以下公式
A2=index(SPLIT(SUBSTITUTE(FORMULATEXT(A1),"=HYPERLINK(""",""),""","""),1,1)
示例
A1=HYPERLINK("http://example.com", "Link")
结果是
A2=http://example.com
答案 4 :(得分:0)
您可以使用FORMULATEXT获取超链接公式单元格的文本,然后使用正则表达式提取URL。
=REGEXEXTRACT(FORMULATEXT(A1), "^=HYPERLINK(""([^""]+)")