¿Cómo puedo automatizar la creación de referencias con nombre en Excel? Quiero que el primer campo de cada fila sea mi referencia
-
06-07-2019 - |
Pregunta
La primera columna de mi hoja de cálculo es una clave única (en cuanto a datos, nada que ver con Excel). Otra de mis columnas contiene enlaces a otras filas (a la clave única de esa fila). Cuando inserto estos hipervínculos, necesito señalar '' nombres definidos '' ya que el orden de las filas cambiará con el tiempo.
No quiero tener que crear el nombre definido cada vez que inserto una nueva fila. ¿Hay alguna manera de definir automáticamente el texto de una columna como el " nombre definido " ;?
Espero que esto esté claro.
Muchas gracias.
Solución 2
Lo tengo. Mike R. me puso en el camino correcto. Gracias.
Tenga en cuenta la necesidad de eliminar caracteres no alfanuméricos para los nombres. Además, duplicar un nombre solo sobrescribe la referencia anterior.
Private Sub Worksheet_Change(ByVal Target As Range)
If (Target.Column = 1 And Target.Text <> "" And Target.Cells.Count = 1) Then
ThisWorkbook.Names.Add _
Name:=StripChar(Target.Text), _
RefersTo:=Target, _
Visible:=True
End If
End Sub
Function StripChar(s As String) As String
With CreateObject("vbscript.regexp")
.Global = True
.ignorecase = True
.Pattern = "[^\dA-Z]"
StripChar = .Replace(s, "")
End With
End Function
Otros consejos
Debe buscar en Workbook.Names o Worksheet.Names (si desea restringir el nombre definido a la hoja de trabajo).
Los ejemplos que se muestran en los enlaces anteriores son bastante buenos. En su caso, desearía usar Range.Value o Range.Text que se encuentra en la celda para usar como la cadena que se pasa como argumento 'Nombre' para el método Names.Add ().
Usando VBA podría verse más o menos así:
ThisWorkbook.Names.Add _
Name:=Sheet1.Range("A1").Text, _
RefersTo:=Sheet1.Range("A:A"), _
Visible:=True
Lo anterior establece el nombre definido para la columna A como el valor (texto) encontrado en la celda del encabezado A1.
Espero que esto ayude!
Mike