Hace varios meses que no publico notas en el blog, no por pereza (bueno, tal vez un poco) ni por desidia y espero que mis pocos, pero leales, seguidores sepan disculparme.
Para retomar el diálogo empiezo con una solución a una consulta que suelo recibir cada tanto: ¿cómo reemplazar los nombres definidos por sus referencias? Como sabemos, los nombres definidos nos permiten, entro otras cosas, volver más legibles nuestras fórmulas (aquí pueden ver todos los posts en mi blog sobre el tema).
Por ejemplo, si en lugar de =SUMA(A2:A13) usamos =SUMA(ventas), quedará inmediatamente claro qué está calculando la fórmula.
En esta nota del 2014 mostré como Excel nos permite reemplazar las referencias en las fórmulas por nombres definidos. Pero Excel no incluye ninguna herramienta para hacer lo opuesto, es decir, reemplazar los nombres definidos en las fórmulas por sus referencias.
Si por algún motivo queremos reemplazar nombres por referencias a rangos, tendremos que echar mano a una macro.
Este código reemplazará los nombres por los rangos referidos en las celdas seleccionadas.
Sub change_to_ref()
Dim Nme As Name
Dim rngCell As Range
For Each Nme In Names
For Each rngCell In Selection
If rngCell.HasFormula Then
If InStr(1, rngCell.Formula, Nme.Name, vbTextCompare) > 0 Then
rngCell.Formula = Replace(rngCell.Formula, Nme.Name, Mid(Nme.RefersTo, 2, 9999))
End If
End If
Next rngCell
Next Nme
End Sub
Para usarlo lo copiamos a un módulo común en el editor de Vb, preferentemente en el cuaderno Personal.xlsb de manera que podamos utilizarlo en todos los cuadernos activos de Excel.