# Buscar - objetivo se puede una macro?



## pepesoto (May 19, 2004)

Hola al Foro.  Ojala puedan ayudarme...

Tengo 750 registros de los cuales debo encontrar una cantidad derivada de una serie de formulas.  Dejenme les explico:
Columna A = Bruto
Columna B = Impuesto (resultado de aplicar muchos calculos al importe de la col. A)
Columna C = Neto (Col. A menos col. B)
Columna D = Cantidad que debe ser igual a la columna C. Esta cantidad en col. D ya la tengo capturada.

x eso uso la herramienta "Buscar-objetivo" para llegar al Bruto a partir de la cantidad que esta en col. D

Pero "buscar-objetivo" de 700 cantidades... ¿Si me explico...?

Cualquier tip sera de gran ayuda... ray:


----------



## Juan Pablo González (May 19, 2004)

Mhm, algo así ?

<font face=Courier New>
<SPAN style="color:#00007F">Sub</SPAN> BuscarObjetivo()
    <SPAN style="color:#00007F">Dim</SPAN> i <SPAN style="color:#00007F">As</SPAN> <SPAN style="color:#00007F">Long</SPAN>
    <SPAN style="color:#00007F">For</SPAN> i = 2 <SPAN style="color:#00007F">To</SPAN> Cells(Rows.Count, 1).End(xlUp).Row
        Cells(i, 3).GoalSeek Cells(i, 4).Value, Cells(i, 1)
    <SPAN style="color:#00007F">Next</SPAN> i
<SPAN style="color:#00007F">End</SPAN> <SPAN style="color:#00007F">Sub</SPAN>
</FONT>


----------



## pepesoto (May 19, 2004)

¡Gracias Juan Pablo!  Voy corriendo a probarla...

Ahi te aviso...


----------



## pepesoto (May 19, 2004)

Ooooops, perdon Juan Pablo, pero no hace nada... La macro la copie dentro de mi libro "personal.xls" donde tengo guardadas toda mis macros... No marca ningun error pero no hace nada...

Cuando utilizo la herramienta buscar-objetivo, me ubico en la columna C, definir la celda C1, con el valor y tecleo el valor que esta en D1, para cambiar la celda A1 y me hace el calculo que verifico que queden iguales las celdas C1 y D1, x eso busco una macro porque tengo 700 valores de A1:A700 x cambiar...


----------



## Juan Pablo González (May 20, 2004)

Si, eso es lo que hace el macro (bueno, tocaría cambiar el For, que para que comience desde 1, y no desde 2).


----------



## Greg Truby (May 20, 2004)

Pepe,

¿Su primera columna está vacia o ya tiene algo?  Si está vacia cambie el segundo argumento en el Cells() en la línea del "For" así:

<font face=Courier New><SPAN style="color:#00007F">Sub</SPAN> BuscarObjetivo()
    <SPAN style="color:#00007F">Dim</SPAN> i <SPAN style="color:#00007F">As</SPAN> <SPAN style="color:#00007F">Long</SPAN>
    <SPAN style="color:#00007F">For</SPAN> i = 1 <SPAN style="color:#00007F">To</SPAN> Cells(Rows.Count, 2).End(xlUp).Row <SPAN style="color:#007F00">' <===Cambie a 2 o 3 o 4</SPAN>
        Cells(i, 3).GoalSeek Cells(i, 4).Value, Cells(i, 1)
    <SPAN style="color:#00007F">Next</SPAN> i
<SPAN style="color:#00007F">End</SPAN> <SPAN style="color:#00007F">Sub</SPAN>

</FONT>

Y cambié el aro For para empezar con la primera línea pero puede ser que debe empezar con 2 si la primera línea son títulos.

{Edit}¡Mi "post" número mil y una estrellita!   {EndEdit}


----------



## pepesoto (May 20, 2004)

¡Wow!

Funciona, que es una maravilla... ¡Tanto tiempo viviendo en el error!  ray: 

No se imaginan el trabajo que me han evitado hacer de a uno x uno...

ray:  a los 2, Juan Pablo y Greg...


----------



## pepesoto (May 20, 2004)

¿Y cuando use otras columnas para la comparacion-busqueda? ¿Que parametros debo de cambiar...?


----------



## icarus1985 (Feb 16, 2015)

Saludos, estoy utilizando el codigo que indican pero me indica el siguiente mensaje "Se ha producido el error 1004 en tiempo de ejecución: Error en el método GoalSeek de la clase Range". Agradecería me puedan oritentar, estoy utilizando office 2013.


----------

