Validar datos con lista de datos que están en otra hoja

Como ya hemos comentado en varias ocasiones, existe la posibilidad de emplear reglas de validación para mostrar listas desplegables.

El problema es ese mensaje de error que dice que no se pueden emplear datos de otras hojas o libros para los criterios de validación.

 

Sin embargo esto no es del todo correcto, porque sí hay una manera de tomar los datos de otra hoja. El truco consiste en haber definido un nombre para los datos que queremos que aparezcan en la lista.
Si hacemos referencia a este nombre como origen de los datos de la lista sí funcionará y aparecerán los valores de la otra hoja en nuestra lista de validación. No olvides poner el signo igual antes del nombre.

 

Esto resuelve el problema de tener que poner unas listas auxiliares en la misma hoja donde tenemos los datos, lo que no queda muy elegante pese a ser el modo en que los programadores de Excel quisieron que funcionase. Con el empleo de nombres podemos tener una hoja auxiliar con todas las listas de valores auxiliares que aparecerán en los desplegables, mientras que la hoja donde se introducen los datos queda limpia y sólo contiene las celdas donde se introducirán los datos.
 

En el archivo adjunto tienes un ejemplo de esto que te cuento.

¿necesitas más?

Vista previaAdjuntoTamaño
ValidarEntreHojas.xls31 KB

Comentarios

Imagen de visitante

Re: Validar datos con lista de datos que están en otra hoja

Gracias por el comentario de validacion de hojas, en verdad me ha sido util porque así puede tomar los datos de otra hoja sin ser vistos o borrados.

Imagen de giovacif

Re: Validar datos con lista de datos que están en otra hoja

Este comentario ha sido movido aquí.
Imagen de visitante

Re: Validar datos con lista de datos que están en otra hoja

No necesariamente, puedes utilizar una Macro, para realizar este proceso. Puedes utilizar la función INDIRECTO que haga referencia a la lista de datos en otra hoja. Ejemplo: =INDIRECTO("sexo") sexo: es un rango con nombre que hace referencia a celdas de otra hoja: hoja1!A1:A2
Imagen de giovacif

Re: Validar datos con lista de datos que están en otra hoja

Este comentario ha sido movido aquí.
Imagen de giovacif

Re: Validar datos con lista de datos que están en otra hoja

Y esto también lo debo hacer por medio de Visual Basic??   tu me puedes guiar, ya que en esto soy algo novaton???       Gracias y Saludos.

Imagen de pacomegia

Re: Validar datos con lista de datos que están en otra hoja

Pues sí, esto hay que hacerlo mediante VBA.

Accede al editor de visual Basic mediante la combinación de teclas [ Alt ] [F11]

Ahí tienes el entorno de trabajo para programar.

 

¿sabes algo de esto?¿has programado antes?¿has grabado alguna macro antes?¿todo esto en totalmente nuevo para ti?

 

 

Imagen de giovacif

Re: Validar datos con lista de datos que están en otra hoja

Hola pacomegia, necesito saber si me podrías ayudar, necesito saber si es posible imprimir una lista desplegable en la validación de datos del primero al último según sea al rango de una sola vez, ya que actualmente lo hago uno por uno, o sea que busco en la lista y voy cambiando de nombre y le doy imprimir, asi hasta llegar al final, pero a veces  manejo listados de hasta 150 personas, y ya te imaginaras lo cansado que se me hace hacerlo de esa forma.   Espero haberme dado a entender.   Saludos.

Imagen de pacomegia

macro que recorra el rango de origen

Bueno, se me ocurre hacer una macro que recorra las celdas del rango de origen de la validación

El rango de la validación se almacena en la propiedad Formula1 de la validación:

por ejemplo, podría ser algo parecido a esto:

Sub ValidaciónListaTodos()
  '  reemplaza el valor de la celda activa por cada uno de los valores de la lista de validación
  '  e imprime la hoja
  '  la celda activa debe ser la que contiene la regla de validación
  Dim RangoValidación As Range
  Dim Celda As Range

  Set RangoValidación = Range(Replace(ActiveCell.Validation.Formula1, "=", ""))
  ' reemplazo el signo = de la fórmula que hace referencia a las celdas
    For Each Celda In RangoValidación.Cells
      ' aquí lo que se quiera hacer con cada valor, por ejemplo:
      ActiveCell.Value = Celda.Value  ' asignamos el valor a la celda activa
      ActiveSheet.PrintOut  ' imprimimos la hoja
    Next
  Set RangoValidación = Nothing
End Sub