MostrarFormula(Formula,Tipo[Argumento opcional],Celda[Argumento opcional])
Formula es una referencia a la celda que contiene la fórmula que se desea mostrar.
Tipo[Argumento opcional]. Es el tipo de fórmula que se desea mostrar:
0 para mostrar la fórmula tal cual fue ingresada en la celda (es el valor por defecto).1 para mostrar la fórmula en inglés.2 para mostrarla en referencia tipo R1C1.
Celda[Argumento opcional], indica si se mostrará la dirección de la celda en la que se encuentra la fórmula que se desea mostrar. Falso (0) es el valor predeterminado, así que si se omite no mostrará la dirección de la celda. Verdadero (1) mostrará la dirección de la celda antecediendo a la fórmula.
Así, si en A11 se tiene la fórmula =SUMA(A1:A10), MostrarFormula dará los siguientes resultados:
| MostrarFormula(Formula,[Tipo],[Celda]) | ||||||||||
|
Si la celda ingresada en MostrarFormula contiene un fórmula matricial, el resultado arrojado se mostrará entre { } indicando que es una fórmula matricial.
Si la celda ingresada en MostrarFormula no contiene una fórmula, la función arrojará error de #N/A.
Function MostrarFormula(ByVal Formula As Excel.Range, _
Optional ByVal Tipo As Byte = 0, _
Optional ByVal Celda As Boolean = False) As Variant
Dim Ref As String
If Formula.HasFormula Then
If Celda = True Then Ref = Formula.Address(0, 0) & ": "
Select Case Tipo
Case 0
If Formula.HasArray Then
MostrarFormula = Ref & "{" & Formula.FormulaLocal & "}"
Else
MostrarFormula = Ref & Formula.FormulaLocal
End If
Case 1
If Formula.HasArray Then
MostrarFormula = Ref & "{" & Formula.Formula & "}"
Else
MostrarFormula = Ref & Formula.Formula
End If
Case 2
If Formula.HasArray Then
MostrarFormula = Ref & "{" & Formula.FormulaR1C1 & "}"
Else
MostrarFormula = Ref & Formula.FormulaR1C1
End If
End Select
Else
MostrarFormula = VBA.CVErr(xlErrNA)
End If
End Function
En este otro tema encontrará una macro que permite crear una matriz con la dirección, el valor y la fórmula de uno o varios rangos seleccionados: Mostrar todas las fórmulas de uno o varios rangos.
Tambien me lo quedo
ResponderSuprimirSaludos
Cesar
Estimado César, muchas gracias y me alegra mucho tu comentario. Como ves el blog está empezando y he estado un poco sólo... y siempre viene bien un poco de compañía, a ver si compartimos un café y algunas ideas sobre Excel, herramienta que sé que manejas muy bien :D.
ResponderSuprimirEstas haciendo un buen trabajo, seria un honor compartir ideas sobre excel Mauricio. En el foro no se te puede enviar mensajes privados.
ResponderSuprimirSaludos,
César
Buen día Mauricio;
ResponderSuprimirY si la fórmula no la quieres en una celda, si no como un mensaje,,,, se podría utilizar este:
Sub Formula_Mensaje()
For Each Window In Windows
For Each Worksheet In Window.SelectedSheets
For Each cell In Application.Selection
addr = Worksheet.Name & "!" & cell.Address
temp = ""
On Error Resume Next
temp = Range(addr).Comment.Text
If InStr(temp, "|") Then
temp = Mid(temp, InStr(temp, "|") + 1)
End If
Range(addr).ClearComments
If Range(addr).HasFormula = True Then
Range(addr).AddComment (cell.Formula & "|" & temp)
Else
If temp <> "" Then Range(addr).AddComment temp
End If
Next cell
Next Worksheet
Next Window
Hola Carlos,
ResponderSuprimirEs una buena alternativa mostrar la fórmula de cada celda como un comentario en ella.
Gracias :D.
Excelente, esto lo estaba buscando por todos lados. Pregunta... hay alguna forma de que me devuelva la formula pero sin el signo = Saludos
ResponderSuprimirHola Matias,
ResponderSuprimirquizás lo más práctico sea anidar la función para remover el signo "=" inicial. Si vas a usar la función en una hoja de cálculo, prueba con sustituir:
=SUSTITUIR(mostrarformula(A1);"=";"";1)
Ten en cuenta el separador de argumentos, estoy usando el punto y coma. Si tu separador de argumentos es la coma, pues cambia los punto y comas por comas.
Si vas a usar la función desde VBA, podrías probar con vba.replace:
vba.replace(mostrarformula(range("a1")),"=","",,1)
Observa el 1 como argumento final tanto en sustituir como en replace, que indican que sólo se reemplace la primera ocurrencia del texto buscado.
Claro, también se podría modificar el código, pero resulta muy fácil hacer lo que buscas anidando la función en otra función ya sea en la hoja de cálculo o en VBA, sin modificar la opción. Así puedes mostrar o no el igual inicual con el mismo código.