Jump to content
Sign in to follow this  
jaimecruz

Buscarv en columna con horas

Recommended Posts

No consigo hacer funcionar bien buscarv cuando la busqueda se realiza en una columna con horas. Lei que Excel redondea las horas a 15 decimales, pero aún haciendo ese redondeo no consigo hacerlo funcionar en condiciones.

También he intentado cambiar el valor del último parametro COINCIDENCIA EXACTA O NO en la función BUSCARV, pero sin éxito.

Me gustaría encontrar una solución con formulas más que con macros ya que las formulas que expongo forman parte de una fórmula bastante gorda.

BuscarvConHoras.zip

Share this post


Link to post
Share on other sites

Hola Jaime

Tu problema tiene que estar en algunos formatos.

Si copias la columna de horas de una hoja a sobre la otra (da igual cuál en cuál) otra verás que tu función devuelve el valor correctamente.

Un saludo desde Vitoria

Share this post


Link to post
Share on other sites

Como le va [uSER=1956]@jaimecruz[/uSER] (y [uSER=182]@ioyama[/uSER]), cambié la función buscarv con coincidencia aproximada y funciona correctamente.

El problema puede ser que la función al no ser vólatil no estaba actualizando el formato del rango buscado o de la matriz buscada y por eso daba ese error. Recuerde sin embargo que para que la función buscarv funcione con coincidencia aproximada la tabla o matriz de búsqueda; más exactamente la primera columna debe estar ordenada de forma ascendente. Si no arrojará resultados incorrectos.

También si es que se pudiera debería restringir un poco la matriz de búsqueda de la función ya que utilizar 2 columnas enteras para tal matriz puede ser poco eficiente. (particularmente si la función "buscarv" debe buscar una coincidencia exacta)

Aquí le dejo el adjunto.

Saludos

BuscarvConHoraschuro.rar

Share this post


Link to post
Share on other sites

Gracias por tu interés Luis, pero tal y como lo adelantaba en mi mensaje la coincidencia aproximada no funciona. Solo tienes que abrir tu archivo y ver que en las fila 8 y 9 el valor que encuentra buscarv es el mismo, es decir, el número 11, cuando debería ser 11 y 11,50.

Ioyama, efectivamente tienes razón. Algo falla con los formatos, pero el caso es que no sé como solucionarlo. He ampliado el archivo para reproducir exactamente lo que hago en mi archivo original.

La hoja2 es la hoja en la que quiero que se busque el precio de la columna B. Selecciono el rango de valores de la columna A que tiene las horas y le he puesto como nombre de rango HORAS.

En la hoja0 he puesto listas desplegables en la columnaA. En la columna B he hecho un BuscarV para comprobar que se realiza bien en este caso.

Si ejecuto la macro en la hoja1 se ve que no funciona bien el buscarv. Es probable que mi fallo esté en como manipulo la variable con la hora en la macro.

BuscarvConHoras2.zip

Share this post


Link to post
Share on other sites

Como le va [uSER=1956]@jaimecruz[/uSER] , disculpe no entendí que necesitaba coincidencia exacta. Aquí le mando dos opciones más. Una con fórmula matricial, (se ingresa con el comando control + shift+enter) y la otra si es que su objetivo real es transformar las horas (Haber si esto es realmente lo que quería).

Saludos

BuscarvConHoraschuro2.rar

Share this post


Link to post
Share on other sites

Gracias Max, pero realmente la solución que aportas está basada en lo que comentaba IOYAMA. Si no tocabas las horas que aparecían en la columna A usando la misma formula que has puesto el error seguiría saliendo.

Luis en relación a tus dos soluciones comentarte que la 2ª realmente no es la solución que buscaba ya que los datos que hay en la hoja de la que se extraen los datos con buscarv son datos ficticios que he puesto simplemente para que visualmente sea facil saber si buscarv está funcionando bien o no.

La primera si es válida, pero la veo bastante compleja de extrapolar a mi archivo ya que como dije este buscarv forma parte de una formula bastante gorda y tendría que realizar como 5 ó 6 buscarv matriciales. Gracias en cualquier caso.

Me imagino que hay una solución muy sencilla a lo que busco, pero para eso es mejor partir de las explicaciones que he dado justo en el mensaje anterior a este, así como del archivo de ese mensaje. Supongo que hago algo mal cuando defino la variable con las horas y la pongo en la celda de la otra hoja.

Share this post


Link to post
Share on other sites

Bueno haber sigamos intentando entonces. Al parecer lo que pasa es un problema de redondeo causado por la forma en que usted manipula los datos con la macro que utiliza.

Si estar tan interiorizado en el como y porque utiliza la macro que plantea, ¿No podría utilizar en vez de esa macro. esta que le adjunto? . Si no puede explique por favor porque.

BuscarvConHoras2pruebachuro.rar

Share this post


Link to post
Share on other sites

Saludos a todos,

Mientras resulta alguna solución bastante creativa como las que vemos con frecuencia, voy a pasar tres propuestas.

  • La primera propuesta requiere una columna adicional, con BuscarV(

  • Una segunda opción usa formulas matriciales, y una opción especial con rangos nombrados para "eludir" el ingreso de las matriciales.

  • Y una tercera con columna adicional, con Indice( y Coincidir(

Uso rangos nombrados, para las diferentes opciones, he incluido algunas capturas de pantalla de esos rango. Ver el administrador de nombres.

Buscarv Con Horas Modificado.zip

Share this post


Link to post
Share on other sites

Comparto la solución que he encontrado que es bastante sencilla. Cuando cogía los datos con las horas de la hoja0 definía la variable como Date. Ahora simplemente no defino que tipo de variable es y todo funciona bien.

Luis, tu solución es muy válida y también muy sencilla. Realmente de los valores de la hoja0 solo me interesaba una sola celda y la contigua con su buscarv correspondiente (vamos a suponer que es solo la fila2), pero lo he puesto así en mi ejemplo porque en la pestaña desplegable de esa celda se podía seleccionar cualquier hora y luego no funcionaba el buscarv. Basándome en la misma filosofia de la solución que aportas podría hacer simplemente:

Sheets("Hoja1").Range("A2").Value = Sheets("Hoja0").Range("A2").Value[/CODE]

Incluso si quisiera podría ponerlo para todos los valores de esta forma:

[CODE]Sub TraspasoHoras2()
Sheets("Hoja1").Select
For i = 2 To 29
Sheets("Hoja1").Range("A" & i).Value = Sheets("Hoja0").Range("A" & i).Value
Next i
End Sub[/CODE]

Muchas gracias porque tu solución es incluso más sencilla que la que yo he encontrado.

Gabriel, acabo de ver las ideas que aportas y te agradezco todas ellas. Verás que la solución final es más sencilla todavía. En cualquier caso muchísimas gracias por tu ayuda.

BuscarvConHoras3.zip

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.
Sign in to follow this  



×
×
  • Create New...

Important Information

Privacy Policy


CTA Templates.png