Extraer una cadena de texto de una fórmula

A lo mejor alguno de vosotros conoce la respuesta, pero en una celda tengo una fórmula como esta:

=if(July!D2 <>"",1,0). Me gustaría poder extraer en otra celda solo la cadena de texto "July". ¿Alguno tiene alguna idea? Supongo que con funciones mid y len se podría hacer.

Respuesta
1

Las fórmulas de excel leen los resultados de las fórmulas, en este caso quieres leer la fórmula. Para eso es necesario crear una macro.

Pon la siguiente macro (función) en un módulo de VBA

Function NombreHoja(celda As Range)
'Por.Dante Amor
    If celda.HasFormula Then
        wformula = celda.Formula
        c1 = InStr(1, wformula, "(")
        c2 = InStr(1, wformula, "!")
        If c1 > 0 And c2 > 0 Then
            hoja = Mid(wformula, c1 + 1, c2 - c1 - 1)
        Else
            hoja = "La fórmula no contien un nombre de hoja"
        End If
    Else
        hoja = "La celda seleccionada no tiene fórmula"
    End If
    NombreHoja = Replace(hoja, "'", "")
End Function

Sigue las Instrucciones para una Función

  1. Abre tu libro de excel
  2. Para abrir VBa y poder pegar la función, Presiona Alt + F11
  3. En el menú elige Insertar / Módulo
  4. En el panel del lado derecho copia la función
  5. En cualquier celda utiliza la función, como cualquier otra función de excel

Por ejemplo, si tu fórmula está en la celda C4, entonces en la celda D4 pon la función así:

=Nombrehoja(C4)

En la celda D4 aparecerá el dato "July"


.

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

.

Avísame cualquier duda

.

¡Gracias Dante Amor !

Increíble... No entiendo la instrucción pero funciona a la perfección. Mil gracias por tu aporte.

Ahora a ver si me puedes ayudar con lo siguiente... La idea de recuperar el nombre de la hoja de una fórmula es porque quiero remplazar dicha hoja de la fórmula con el resultado de un buscarv... Es decir, tengo un libro con varias hojas (June, July, August, etc.) y en una de las hojas hace un calculo de varios valores que hay en la hoja June. Ahora bien, quiero con un botón reemplazar en todas las celdas que hay en un rango que se que contienen el valor "June" con el resultado de un buscarv. Para esquematizarlo un poco:


Hojas: DR, JUNE, JULY, AUGUST

En la hoja DR:

  • Un rango de celdas con fórmulas que hacen referencia a otras hojas
    • Ejemplo: =IF(June!X3="DOFF","RDO",IF(June!X3="ALEAV","AL",IF(June!X3="PHOLI","PH",IF(June!X3="","","PR"))))
  • En la celda E1: un valor
  • En la celda E2: un botón que quiero que remplace en el rango de celdas anterior el nombre de la hoja por el del valor de la celda E1.

En el botón de momento tengo este código

Sub Replace2()
Dim selectedvalue As String
selectedvalue = ActiveSheet.Range("E1").value
    Range("E26:L26").Select
    Selection.Replace what:="June", Replacement:=selectedvalue, LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
End Sub

Supongo que lo que necesito es que me reemplaze el what:="June" con el resultado de tu formula. No se como aplicar el resultado de una funcion dentro del sub.

Gracias de antemano!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas