一般来说,我正在尝试创建一个包含数百行相关 URL 的 MS Excel 电子表格。Column A
应该包含人类可读的文本,但单元格文本超链接到 HTTP URL。Column B
应该包含纯文本文字 HTTP URL(这可以或不能超链接到其明显的 URL,这并不重要)。Column C
并且具有简单的纯文本内容。电子表格如下所示:
| 产品 A |http://主机:1234/svn/product_a| 其他数据... |
| 产品 B |http://主机:1234/svn/product_b| 其他数据... |
| 产品C |http://主机:1234/svn/product_c| 其他数据... |
请注意,超链接 URL 和纯文本 URL 是相关的,但是不同的!
我目前有一个bash
+sed
脚本,使用简单的正则表达式替换 URL 来生成这个详尽的存储库列表,但我找不到任何关于如何表示的 MS Excel 文档纯文本带有超链接文本的单元格(理想情况下适合复制粘贴到电子表格中)。
如果我生成某种像 HTML 这样的标记,那就很简单了;但不幸的是,还有一些额外的列需要提供给其他非开发人员定期编辑。
是否有某种方法可以Column A
仅使用复制到单元格中的纯文本来创建单元格?
抱歉,标题太差了,我对 MS Excel 及其术语一点都不熟悉
答案1
如果 B 列已包含 URL,而 A 列包含您的纯文本 URL,则请在单元格中尝试此操作C1
。 (这假定您可以插入 C 列用于此用途而不会弄乱您的组织。另一种选择是在 A 列中的每个公式中输入纯文本名称。)
=HYPERLINK(B1,A1)
的参数HYPERLINK
是(link_location,[friendly_name])
friendly_name是可选的。
更新
/
注意:仅当您希望friendly_name与URL中最后一个文本相同时,以下方法才会起作用。
假设您的数据从第 1 行开始,将其放入单元格A1
并向下拖动。
=HYPERLINK(B1,IFERROR(RIGHT(B1,LEN(B1)-FIND("$",SUBSTITUTE(B1,"/","$",LEN(B1)-LEN(SUBSTITUTE(B1,"/",""))))),B1))
现在来解释一下!
LEN(B1)-LEN(SUBSTITUTE(B1,"/","")
SUBSTITUTE
参数(text,old_text,new_text,[instance_num])
中instance_num是可选的。
SUBSTITUTE
由于我们没有提供 instance_num 参数,因此将字符串中的所有/
字符替换为空字符串。使用 ,LEN
我们得到字符串的长度减去不带 的字符串的长度,这/
给出了发生的次数/
,对于您的 OP 来说,该次数为 4。
SUBSTITUTE(B1,"/","$",4)
在这种情况下,我们使用可选的第四个参数(我使用来自 OP 的先前结果的数字本身作为此示例)。这只会将最后一次出现的 替换/
为标签$
,该标签应该是某个永远不会成为字符串一部分的字符。您的 OP 结果将是“http://主机:1234/svn$product_a”
LEN(B1)-FIND("$","http://host:1234/svn$product_a")
21
FIND
参数是(find_text,within_text,[start_num])
,我们不需要使用可选的 start_num 参数,因为如果我们选择了正确的标签,则只有一个。(再次,我在此使用来自 OP 的先前结果中的字符串仅用于此示例)。
字符串的长度 (30) 减去标签的位置 (21) 得出最后一个/
(9) 之后的文本的长度。
RIGHT
为您提供字符串最右边的 9 个字符的文本字符串。
IFERROR
将其包装在错误检查中。如果没有错误,您将获得计算结果。如果此错误(例如,和函数要处理的/
字符串中没有),则它将返回文本。FIND
SUBSTITUTE
B1
最后,该函数将使用上述计算得出的friendly_nameHYPERLINK
从URL创建一个链接。B1
这种查找分隔符后的最后一个字符的方法并不是我想出来的,但是到处都是,而且我已经用了很长时间,以至于我不知道该把它归功于谁!
(一旦我想到这一点,我就必须添加它:)希望它有所帮助。)