Tengo una tabla en Excel que consta de 3 columnas:

--------------
|ID|Name|Info|
--------------

EN la columna de información hay texto que incluye la cita y el enlace a la fuente. Pero, de alguna manera, no se reconocen como hipervínculo (es decir, no se puede hacer clic). Los enlaces siempre conservan el formato:

(http://www. .....) or (https://www. ....) 

Siempre están rodeados de llaves y están en la nueva línea.

¿Cómo puedo convertir automáticamente estos enlaces dentro de las celdas de texto en hipervínculos? Intenté usar la autocorrección, pero no funciona. Incluso cuando selecciono el texto y hago un clic derecho, no hay una opción de hipervínculo.

Cualquier ayuda es apreciada. Incluso si la solución está usando macros.

ACTUALIZACIÓN: Ejemplo del texto en la celda

The information in this cell is about Google (http://www.google.com) and taken from Wikipedia (http://en.wikipedia.org)
0
Cap 17 ene. 2018 a las 17:10

3 respuestas

La mejor respuesta

Esto debería acercarse a lo que desea lograr. Un número ilimitado de enlaces se convierten en hipervínculos funcionales, escritos en la columna Info y a la derecha de este (o en el número de columnas C a la derecha de Info. Observe los comentarios en el código

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
1
Variatus 18 ene. 2018 a las 08:59

Para convertirlos "en el lugar", seleccione las celdas y ejecute esta breve macro:

Sub hyperMaker()
    Dim rng As Range
    Set rng = Selection

    For Each r In rng
        v = r.Value
        If Left(v, 1) = "{" And Right(v, 1) = "}" Then
            If Mid(v, 2, 4) = "http" Then
                vv = Mid(v, 2, Len(v) - 2)
                ActiveSheet.Hyperlinks.Add Anchor:=r, Address:=vv, TextToDisplay:=v
            End If
        End If
    Next r
End Sub
0
Gary's Student 17 ene. 2018 a las 14:26

Para convertirlos en su propia celda, necesitaría VBA - simple, pero esto es más simple: -

Inserte una columna en blanco al lado de la columna Info. Ingrese esta fórmula en la fila 2. Ajuste la referencia a la columna C en la fórmula para apuntar a su columna Info.

=HYPERLINK(MID($C2,2,LEN($C2)-2))

Copie la fórmula hacia abajo según sea necesario. Esto debería crear hipervínculos en la nueva columna. Seleccione todos ellos, Copiar y Pegar> Valores en su lugar. Eliminar la columna original. Hecho.

1
Variatus 17 ene. 2018 a las 14:23
48303115