我在excel中有一个由3列组成的表:
--------------
|ID|Name|Info|
--------------
在信息栏中,有一些文字包含引文和指向来源的链接。但是,不知何故,它们不被认为是超链接(即 - 不可点击)。链接始终保留格式:
(http://www. .....) or (https://www. ....)
它们总是被大括号包围,并且在新行上。
如何自动将文本单元格中的这些链接转换为超链接?我尝试过使用autocorrection,但是没有用。即使我选择文本并进行右键单击 - 也没有超链接选项。
感谢任何帮助。即使解决方案是使用宏。
更新:单元格中文本的示例
The information in this cell is about Google (http://www.google.com) and taken from Wikipedia (http://en.wikipedia.org)
答案 0 :(得分:1)
为了在他们自己的单元格中转换它们,你需要VBA - 简单,但这更简单: -
在Info
列旁边插入一个空白列。在第2行中输入此公式。将公式中对C列的引用调整为指向Info
列。
=HYPERLINK(MID($C2,2,LEN($C2)-2))
根据需要复制公式。这应该在新列中创建超链接。选择所有这些,复制和粘贴>价值到位。删除原始列。完成。
答案 1 :(得分:1)
这应该更接近你想要达到的目标。无限数量的链接将转换为正常运行的超链接,写入Info
列及其右侧(或C
右侧的Info
列数。请注意评论在代码中。
Sub ExtractLinks()
' 18 Jan 2018
Const TargetClm As Long = 3 ' 3 defines column C
' hyperlinks are written to TargetClm
' and to the columns to the right of TargetClm
Dim Txt As String
Dim R As Long, C As Long
Dim n As Integer
Application.ScreenUpdating = False
With ActiveSheet
' Info is in column C, starting from row 2:
For R = 2 To .Cells(.Rows.Count, TargetClm).End(xlUp).Row
C = 0 ' set C = 1 to not over-write original cell value
' and start writing to the right of TargetClm
With .Cells(R, TargetClm)
Txt = .Value
Do
n = InStr(Txt, "(")
If n Then
Txt = Mid(Txt, n + 1)
n = InStr(Txt, ")")
If n Then
.Offset(0, C).Formula = "= HYPERLINK(""" & Left(Txt, n - 1) & """)"
C = C + 1
Txt = Mid(Txt, n + 1)
End If
End If
Loop While n
End With
Next R
End With
Application.ScreenUpdating = True
End Sub
答案 2 :(得分:0)
要转换它们"就地",选择单元格并运行这个短宏:
#include<iostream>
using namespace std;
int main()
{
cout<<endl<<" S M T W T F S"<<endl<<endl;
int k=1;
for(int i=0;i<6;i++)
{
for(int j=0;j<7;j++)
{
if(k>31){break;}
if(k<10){cout<<" "<<k++<<" ";}
else{cout<<k++<<" ";}
}cout<<endl;
}
return 0;
}