Hacer correr una formula Excel con una macro

Tengo una formula Excel que quiero que una macro la haga correr (ejecutar) en toda una columna hasta que encuentre lo que busco o termine los valores/texto de la columna.

1 Respuesta

Respuesta
1

podrías aplicar un bucle o loop del tipo FOR EACH ..NEXT, incluyendo un condicional que evalúe esa condición.

Por ejemplo, quieres evaluar el rango A1:A1000, y la condición es que el valor buscado sea negativo, mientras no encuentre este condicionante siga la búsqueda y la inserción de tu fórmula, el código podría ser:

Sub recorrido()

For each celda in Range("A1:A1000")

if celda.value<0 then

exit sub

else

celda.formula = 'tu fórmula'

end if

End Sub

No puedo concretar más con los datos que aportas. Espero te oriente.

Saludos

www.excelforo.blogspot.com

Muchas gracias por tu orientación. La formula que quiero hacer correr es esta: =EXTRAE(A1;ENCONTRAR(B1;A1;1)+LARGO(B1)+1;3), se trata de encontrar un texto pequeño entre muchos textos que están en una pero en cada celda hay un texto grande y solo busco un texto pequeño. Con esta formula, yendo fila a fila lo puedo encontrar, pero el problema es que si tengo 100 filas de búsqueda tengo que hacerlo 100 veces, y quiero que lo haga automático hasta que encuentre el primer valor y lo arroje. A ver cómo lo ves, y gracias.

No termino de ver la estructura de datos ni qué textos buscas, ni qué texto es el que quieres encontrar..

Sub recorrido()
For Each celda In Range("A1:A1000")
If Mid(celda.Value, InStr(1, celda.Offset(0, 1).Value, celda.Value) + Len(celda.Offset(0, 1).Value) + 1, 3) = "texto buscado" Then
MsgBox "encontrado"
Exit Sub
End If
Next celda
End Sub

No quisiera hacerte trabajar en balde, te lo voy a intentar explicar mejor. Tengo una columna llena de textos distintos desde A1:A1000. En algún lugar de ella tengo que encontrar "REF=" Este valor REF= lo he puesto en B1 a mano, y necesito como resultado los tres caracteres que vienen a continuación de REF=. Me da igual en qué fila esté REF=, pero necesito como resultado los tres siguientes en C1.

REF= puede estar por ejemplo dentro de A247 y tener la forma de "numpedidoAJT123NUMREF=456VENTAGH458=". Esto de uno en uno ya me lo soluciona la formula.

Lo que necesito es que me busque B1 desde A1 a A1000 y me lo devuelva en C1. Te estoy muy agradecido.

Prueba con

Sub recorrido()
For Each celda In Range("A1:A1000")
valor = Mid(celda.Value, InStr(1, celda.Value, Range("B1").Value) + Len(Range("B1").Value), 3)
If InStr(1, celda.Value, Range("B1").Value) Then
Range("C1").Value = valor
Exit Sub
End If
Next celda
End Sub

Creo que la próxima consulta que hagas deberías ser más claro y aportar toda la información desde el principio.. eso ahorrará mucho tiempo a aquellos que pretenden ayudar.

Slds

Gracias, por tu trabajo y tu comentario. La verdad, no había pensado que tenía que dar tanta información ni que mi formula no hiciera falta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas