lunes, febrero 16, 2009

Hipervínculo a una celda específica en Excel.

En la nota sobre hipervínculos en Excel vimos como crearlos en forma dinámica. En ese ejemplo mostrábamos como hacer que al elegir un valor de una lista desplegable, el hipervínculo se dirigiera a la primer celda vacía de una columna en una hoja determinada.

También podemos hacer que el vínculo se ligue a una celda determinada de un rango. Por ejemplo, supongamos que tenemos un cuaderno con una lista de clientes en una hoja (para el caso, “clientes”). En otra hoja ponemos una lista desplegable (con validación de datos) que muestre todos los nombres de los clientes. Queremos que al elegir un cliente, la celda que contiene el hipervínculo se actualice y que al pulsarlo nos lleve a la fila de cliente.

Como en el caso anterior, usamos la función HIPERVINCULO. La fórmula es sencilla, pero aprovecharemos la ocasión para mostrar también una técnica para construir fórmulas no tan sencillas.

En la hoja “clientes” tenemos esta lista





Empezamos por crear un rango dinámico con un nombre definido





La fórmula del nombre definido es
=DESREF(Clientes!$A$2,0,0,CONTARA(Clientes!$A:$A)-1,1)

Esta fórmula nos permite que el rango definido por el nombre se vaya adaptando a medida que agregamos o quitamos clientes de la lista.

En otra hoja creamos la lista desplegable basándonos en el nombre definido




En la celda contigua queremos poner la fórmula que cree el hipervínculo al cliente según se haya elegido en la lista desplegable.

Para encontrar en fila del rango de los clientes se encuentra el elegido usamos la función COINCIDIR de esta manera

=COINCIDIR(A1,Clientes,0)+1





Usamos el nombre definido “clientes” pero agregamos 1 al resultado ya que el nombre no toma en cuenta la primer fila del rango (el encabezamiento de la columna A).

Ahora podemos crear con facilidad la dirección de la celda buscada con la función DIRECCION

=DIRECCION(B1,1,,,"clientes")




Podemos usar el resultado en la celda B4 como argumento en la función HIPERVINCULO que pondremos en la celda B1

=HIPERVINCULO("#"&B4,"Ver "&A1)



Pero esto nos obligaría a usar celdas auxiliares. Sencillamente podemos reemplazar la referencia en la función por las fórmulas que hemos usado, quedando

=HIPERVINCULO("#"&DIRECCION(COINCIDIR(A1,Clientes!A:A,0),1,,,"clientes"),"Ver "&A1)






La pregunta que se impone ahora es: ¿cómo hacemos para que al elegir el cliente en la celda A1 Excel se dirija automáticamente a la celda correspondiente sin necesidad de pulsar en B1?

Bien, este será el tema de una futura nota.


Technorati Tags:

23 comentarios:

  1. No, no es el sitio adecuado. La idea de los comentarios es opinar o responder algo sobre el contenido de la nota, es decir, comentar. Lo tuyo es una consulta, y bastante vaga debo decir. Por favor, lee esta nota.

    ResponderBorrar
  2. Estimado Jorge,
    no sabes cuánto bien me está haciendo leer tus aportes. Hace 30 días que introduje un tema en un foro y no tenía "ninguna" respuesta. Leyendo esta nota que realmente me agradó, encontré el 50 % de la solución a mi problema a través de la fórmula coincidir en la que agregas +1 para indicar la columna siguiente. Sé que no tiene nada que ver con la nota, pero no imaginas la gratitud que experimenté por haber encontrado. Si tus temas no fueran lindos. Yo no hubiera llegado hasta aquí leyendo. Me sentí obligado a escribirte este agradecimiento que sale de corazón.
    Aldo Fabre, desde Lima

    ResponderBorrar
  3. Buena tarde amigo disculpa necesito orientación necesito crear hipervinculos que al colocar un numero en una celda se direccione a una hoja en el mismo libro tomando en cuenta que cada hoja representa a un cliente como puedo hacer eso que se ejecute solo con una numero marcado te agradezco todo lo que me puedas ayudar

    ResponderBorrar
  4. No me queda claro lo que quieres hacer. Puedes crear hipervínculos con facilidad que se liguen a una celda específica en cualquier hoja del cuaderno. Es el tema de esta nota.
    Si lo que buscas es cque el vínculo se cree automáticamente al ingresar el número en la celda tendrás que programar un evento (Vba-macros).

    ResponderBorrar
  5. Estimado Jorge, queria consultarte para realizar un hipervinculo dinamico. A lo que me refiero seria teniendo 2 hojas en un mismo libro; en donde una tenga un detalle de deuda por cliente y la otra tenga un resumen de los contactos realizados a cada cliente. El punto está que como sumaremos "n" cantidad de contactos al cliente el hipervinculo se irá modificando de posicion. Espero que entiendas la problemática y puedas ayudarme. Saludos.

    ResponderBorrar
  6. Hola Juán, no estoy seguro de entender la consulta. La idea es que el hipervínculo te lleve a la celda que contiene el último contacto con el cliente? Esa celda, ¿contiene una fecha?

    ResponderBorrar
  7. Ante todo, gracias por contestar. El tema seria que tanto en una hoja como en la otra el dato por el cual se conectaria seria el nro de documento (factura). La intencion es que el hipervinculo se posicione en el documento; cada fila contendrá el contacto que se realizó. Por lo que el siguiente documento iría abajo del comentario del documento anterior.

    ResponderBorrar
  8. Juan, enviame un archivo con el ejemplo de lo que se quiere hacer (la dirección aparece en enlace Ayuda).

    ResponderBorrar
  9. Gracias por toda esta informacion, pero quiero saber lo siguiente despues de utiilzar un hipervinculo como me devuelvo a donde estaba o a la celda origen.

    ResponderBorrar
  10. Hola Jorge
    Creo que lo que necesito es algo parecido a esto pero los datos los tengo metidos en tablas y no sé si puedo hacer rangos.
    Te cuento, tengo dos hojas, una (CLIENTES) con el listado de clientes, su numero de identificación y algunos datos principales y otra (COMENTARIOS) con el mismo listado y otras columnas con diferente información.
    Para que el listado de la segunda hoja sea el mismo tengo para la referencia del cliente la formula

    =IF(CLIENTES!C2<>"";CLIENTES!C2;"")

    y lo que quiero es que al ponerme en una referencia de la hoja COMENTARIOS me lleve a la línea correspondiente de la hoja CLIENTES. Si pongo

    =IF(CLIENTES!C2<>"";HYPERLINK("#CLIENTES!C2";PENDIENTES!C2);"")

    me lleva a donde quiero, pero al copiar la formula hacia las filas de abajo siempre me redirige a C2 y quiero que ese C2 vaya cambiando igual que el resto de la fórmula.
    ¿Me puedes ayudar?

    ResponderBorrar
  11. En la fórmula =IF(CLIENTES!C2<>"";HYPERLINK("#CLIENTES!C2";PENDIENTES!C2);"")

    la parte "#CLIENTES!C2" es texto y por eso no cambia la referencia.
    Tendrías que usar

    "#CLIENTES!"&C2

    es decir, concatenar le tecto "#CLIENTES!" con la referencia a la celda C2.

    ResponderBorrar
  12. Mil gracias por contestarme y además tan rápidamente.
    He puesto lo que me comentas:

    =IF(CLIENTES!C2<>"";HYPERLINK("#CLIENTES!"&C2;CLIENTES!C2);"")

    pero me da un warning de refernecia circular por lo que no puede calcular la formula correctamente y me pone como valor 0. El link no funciona tampoco porque me dice que la referencia no es válida.

    ResponderBorrar
  13. Bien. sin ver el cuaderno es difícil darte un diagnóstico. La referencia circular se produce si a lo largo de la cadena de cálculo la fórmula se refiere a la celda en la cual fue introducida. El ejemplo obvio sería si pones la fórmula en la celda C2.
    En el momento que hay una referencia circular el vínculo no puede funcionar.

    ResponderBorrar
  14. Como se puede calcular en una hoja (VISITA) los dias pasados entre fechas si ponemos el día de hoy , tomando el valor de la última fecha introducida en una fila de otra hoja (RECAUDACION), TENIENDO EN CUENTA QUE POR UNA TIENDA SE PUEDE PASAR 10 VECES Y OTRA SOLO 4.
    UN SALUDO.

    ResponderBorrar
  15. El comentario/consulta no está relacionado con el tema de la nota. Te sugiero que leas lo que pongo en el enlace Ayuda (en la parte superior de la plantilla).

    ResponderBorrar
  16. Buenas noches, primero decir que es brillante la idea de usar una concatenación para que cambie la referencia. Espero que me podáis ayudar en esta línea. Tengo una tabla dinámica y querría poder introducir en ella un link que me permita ir a una celda en concreto de otra hoja de ese mismo libro. He probado con el hipervínculo como valor de la lista de datos de la que se nutre la tabla dinámica pero en esta me aparece el nombre del hipervínculo pero no se activa la celda en cuestión. Espero haberme explicado

    ResponderBorrar
  17. No se puede modificar las celdas del rango que ocupa la tabla dinámica. Tienes que ver a la tabla como una "imagen" de la base de datos que la nutre.

    ResponderBorrar
  18. ES MUY BUENA PAGINA AUNQUE LE FALTA ALGO MAS

    ResponderBorrar
  19. Tengo libro de 3 hojas:
    Hoja 1: Listado clientes
    Hoja 2: Compras de cada mes, datos demográficos del cliente.
    Hoja 3: Cuadro resumen de cliente con buscarv.

    La idea es que al pinchar el nombre de un cliente de la Hoja1, la Hoja3 muestre el resumen de ese cliente, pero sin tener que hacer 50.000 cuadros. Es posible enviar información a través del hipervínculo, por ejemplo, el nombre?

    ResponderBorrar
  20. Janito,

    los hipervínculos no envían información, contienen la ruta a una celda del libro o de otro libro o a una página Web o a un documento.
    Si lo que buscás es que al pinchar el nombre en Hoja1, se active la Hoja3 mostrando el resumen del cliente, la única forma de hacerlo es con un evento (macro).

    ResponderBorrar
  21. Excelente. tengo una consulta como haria un hpervinculo de un libro de excel que cambia el mes y lo haga automatico. Ejemplo el libro se llama Consulta y dentro de este estan los meses. La idea seria que al cambiar cada mes el hipervincule cambie el mes intente con concatenar el mes pero no me sale. Estare atento a cualquier sugerencia.

    ResponderBorrar

Nota: sólo los miembros de este blog pueden publicar comentarios.