Excel - Ayuda con funcion

 
Vista:

Ayuda con funcion

Publicado por ariel (4 intervenciones) el 09/03/2007 00:17:00
Espero que alguien me pueda ayudar porque me da errores y no la puedo hacer funcionar.
Lo que quiero hacer es crear una funcion que pueda utilizar ingresandole los parametros desde una celda.
Por ej =hacer(F1,R5) Donde F1 contiene el nombre de la hoja donde quiero buscar y R5 el dato que quiero hallar.
La idea es que la funcion hacer de por valor lo que contiene la celda de la derecha de la cual estoy buscardo el dato. Es decir el dato que busco esta en A1 quiero que en la celda que escribi =hacer(F1,R5) me mustre el valor de B1. (buscando solo en la fila A en este caso, hasta que encuentre una celda vacia).

Function hacer(hoja As String, datobuscado as string) As String
Worksheets("hoja").Activate
Range("a1").Select
Do While ActiveCell <> Empty
If ActiveCell.Value = datobuscado Then
ActiveCell.Offset(0, 1).Select
prueba = ActiveCell.Value
ActiveCell.Offset(0, -1).Select
ActiveCell.Offset(1, 0).Select
Else
ActiveCell.Offset(1, 0).Select
End If
Loop

hacer = prueba
End Function
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Ayuda con funcion

Publicado por José Luis (700 intervenciones) el 09/03/2007 08:59:37
Estás haciendo una función con estilo macro, lo que no es muy correcto.

En principio, no necesitas indicarle a la función en qué hoja estás trabajando pues la función asume que siempre se ejecuta desde la hoja activa.

Si "hoja As String" es una variable que contiene el nombre de la hoja, no deberías indicarla con comillas Worksheets("hoja"), sino Worksheets(hoja).Activate

Es aconsejable pasar los parámetros que necesitas como argumentos de la función. P.ej. si quieres que te devuelva algo de la columna D en función de lo que haya en otra celda de la columna A, debes pasar la celda Ax y la columna D como argumentos de la función.

Para el caso que nos ocupa, no haría falta programar nada pues la función BUSCARV de excel ya se encarga de realizar lo que indicas

BUSCARV(LoQueQuieroBuscar;RangoDondeLoBusco;ColumnaDelRangoDondeEstáLoQueQuieroQueMeDevuelva;0)

=BUSCARV("XXX";A1:B5;1;0)
Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda con funcion

Publicado por ariel (4 intervenciones) el 09/03/2007 11:43:09
Lo necesito hacer asi para poder pasar la formula a las celdas que estan alrrededor por que el rago donde quiero buscar son distintas hojas (365 * 2 años)
buscarb me funciono pero no me deja que enombre de la hoja sea dinamico es decir que en la celda b1 lo tome de A1 y en B2 lo tome de A2 etc. Por ese caso lo estoy tratando de hacer con funciones si conoces otra ,manera bienvenida sea.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda con funcion

Publicado por José Luis (700 intervenciones) el 09/03/2007 21:31:36
No entiendo qué quieres decir con "el nombre de la hoja sea dinamico es decir que en la celda b1 lo tome de A1 y en B2 lo tome de A2".

Expón un ejemplo claro.
Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar