** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Otros de Microsoft: Windows y Office > Excel
  Mensajes nuevos Mensajes nuevos RSS - If con varias causisticas
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

If con varias causisticas

 Responder Responder
Autor
Mensaje
algohe Ver desplegable
Nuevo
Nuevo


Unido: 25/Junio/2020
Localización: Madrid
Estado: Sin conexión
Puntos: 10
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita algohe Cita  ResponderRespuesta Enlace directo a este mensaje Tema: If con varias causisticas
    Enviado: 06/Noviembre/2020 a las 10:10
Buenos días y gracias por la ayuda antes de todo.

Tengo un excel donde hay varios campos por los que tengo que filtrar, pero son campos opcionales si estan rellenos filtra por el campo si esta vacio lo ignora, el problema que tengo es que no se como construir el IF para que valore todo.

Seria en vba ya que es codigo que va dentro de una macro.

Pongo un ejemplo de lo que necesitaria.

campo 1 relleno--> filtro
campo 2 vacio --> lo ignoro
campo 3 relleno --> filtro
campo 4 relleno --> filtro

Aquí filtraría por todos los campos ignorando el 2, pero los 4 campos pueden estar vacios, rellenos, unos rellenos y otros vacios....

Gracias
Arriba
AnSanVal Ver desplegable
Administrador
Administrador
Avatar

Unido: 16/Marzo/2005
Localización: España
Estado: Sin conexión
Puntos: 5769
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita AnSanVal Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 06/Noviembre/2020 a las 13:46
Con los datos aportados, yo no puedo saber como son tus datos ni donde están, por tanto no puedo recrear la situación de tu modelo de datos.

Usa la Grabadora de Excel y filtra desmarcando celdas vacías.


Saludos desde Tenerife.

Mi sitio_web con ejemplos Excel.
Arriba
algohe Ver desplegable
Nuevo
Nuevo


Unido: 25/Junio/2020
Localización: Madrid
Estado: Sin conexión
Puntos: 10
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita algohe Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 06/Noviembre/2020 a las 17:39
Interate explicar un poco mejor.

Tengo un excel en el cual añaden una seria de datos de un material que luego se tienen que usar para filtrar en otro excel, tengo ancho, largo, grosor, espesor, etc....

Estos campos no son obligatorios es decir puede estar relleno solo largo y buscaría solo largo en la otra lista de materiales o puede tener 3 campos rellenos y entonces tendría que filtrar por los 3.

La idea es si el campo esta vacio no filtres y si esta relleno filtras por ese campo tambien.

Digamos que lo que necesitaria es crear un If "dinamico" que filtre por los campos por datos ignorando los vacios.
Arriba
SkaryBlondi Ver desplegable
Habitual
Habitual


Unido: 24/Octubre/2020
Localización: Asturias
Estado: Sin conexión
Puntos: 67
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita SkaryBlondi Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 06/Noviembre/2020 a las 18:04
Yo lo resolvería a groso modo del siguiente modo
if campo1 <> "" then
   If condicion = "" then
       condicion = campo1
   else
       condicion = condicion & " or " & campo1
   end if
end if

if campo2 <> "" then
   If condicion = "" then
       condicion = campo2
   else
       condicion = condicion & " or " & campo2
   end if
end if

if campo3 <> "" then
   If condicion = "" then
       condicion = campo3
   else
       condicion = condicion & " or " & campo3
   end if
end if

if campo4 <> "" then
   If condicion = "" then
       condicion = campo4
   else
       condicion = condicion & " or " & campo4
   end if
end if

Si al final el campo condicion es nulo es que no hay ningún filtro y en caso contrario en el campo condicion tienes el filtro que hay que aplicar en el que yo he puesto la condicion OR pero que pueden ser AND

Tendrás que aplicar a cada filtro una etiqueta y luego hacer mención al rango o bien apuntar directamente a la celda que contiene el valor.

Saludos,



Arriba
AnSanVal Ver desplegable
Administrador
Administrador
Avatar

Unido: 16/Marzo/2005
Localización: España
Estado: Sin conexión
Puntos: 5769
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita AnSanVal Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 07/Noviembre/2020 a las 12:33

1.- … hay varios campos…(¿Cuáles, como, donde?)

2.- campo 1 relleno--> filtro (¿Campo relleno:  a) toda la columna, b) sólo una celda?)

3.- campo 2 vacio --> lo ignoro (¿Campo vacío:  a) toda la columna, b) sólo una celda?)

4.- Tengo un excel1 en el cual añaden una seria de datos de un material que luego se tienen que usar para filtrar en otro Excel1, tengo ancho, largo, grosor, espesor, etc...

  (4 es prácticamente lo mismo que en 1, 2, y 3) .

 

Importante è Las instrucciones que damos en VBA (macros) deben ser totalmente precisas, incluso si le damos un rango y funciona,  pero mañana modificamos el rango la macro dejaría de funcionar con corrección. Por tanto es necesario conocer: rango correcto, si ese rango va a variar en número de filas, etc.

 

Se necesita una imagen (con datos inventados pero fieles)  y algún ejemplo claro de lo que quieres obtener en algún supuesto concreto.

 

 

1) è (para entendernos) Excel es la aplicación que te vino con OFFICE, un libro no es un Excel, un libro está compuesto de hojas.




Saludos desde Tenerife.

Mi sitio_web con ejemplos Excel.
Arriba
algohe Ver desplegable
Nuevo
Nuevo


Unido: 25/Junio/2020
Localización: Madrid
Estado: Sin conexión
Puntos: 10
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita algohe Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 09/Noviembre/2020 a las 09:27
Intentare ser lo mas detallado posible:

En una hoja tengo una seria de campos (adjunto imagen), esos campos se pueden o no rellenar y hacen de filtro en otra hoja donde tengo no listado de materiales.



Con estos valores mas otros que son obligatorios (que esos simplemente hago un if en la macro) realizo una búsqueda en otra hoja y muestro los resultados.

Realizar la búsqueda de los campos obligatorios y mostrar los resulto es fácil, el problema lo tengo cuando quiero crear un if con los campos que no son obligatorios porque si contemplo todos los casos se hace un if gigantesto e imagino que habrá otra forma mas sencilla de hacerlo pero no logro encontrarla.

Se que a través de formulas en Excel se puede hacer pero necesito que sea a través de una macro porque luego con esos datos que tengo que realizar mas procedimientos.

Gracias
Arriba
algohe Ver desplegable
Nuevo
Nuevo


Unido: 25/Junio/2020
Localización: Madrid
Estado: Sin conexión
Puntos: 10
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita algohe Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 09/Noviembre/2020 a las 09:31
https://ibb.co/GsPvskD

este es el enlace de la imagen 
Arriba
AnSanVal Ver desplegable
Administrador
Administrador
Avatar

Unido: 16/Marzo/2005
Localización: España
Estado: Sin conexión
Puntos: 5769
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita AnSanVal Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 09/Noviembre/2020 a las 18:37
Si tu ejemplo tiene un sólo registro, no necesitas filtrarlo.

Así entiendo que hayas ignorado lo de «... algún ejemplo claro de lo que quieres obtener...», con un sólo registro no puedes mostrar un ejemplo filtrado.

Y si tú no puedes... imagínate yo. 

Sigo a la espera de que que decidas mostrar algo más parecido a tu modelo de datos y ejemplo(s) de lo que quieres obtener. Yo sigo sin poder ver que quieres decir con:
  «... campo 1 relleno--> filtro, campo 2 vacío --> lo ignoro...». (seguramente para ti está claro).


Saludos desde Tenerife.

Mi sitio_web con ejemplos Excel.
Arriba
RodriguezA Ver desplegable
Nuevo
Nuevo
Avatar

Unido: 25/Noviembre/2020
Localización: España
Estado: Sin conexión
Puntos: 2
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita RodriguezA Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 25/Noviembre/2020 a las 16:18
Creo que si eres un poco más detallista te podemos ayudar Wink
Arriba
Marciana Ver desplegable
Asiduo
Asiduo
Avatar

Unido: 20/Septiembre/2004
Localización: Argentina
Estado: Sin conexión
Puntos: 316
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita Marciana Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 05/Diciembre/2020 a las 23:49
Hoa
A ver si esto puede ayudar.
Hice este ejemplo tonto:
Una tabla con datos:
q w e
1 2 1
q 3 2
1
5
1 y 2

Este código lo generé grabando la macro:
Sub filtro()
    Range("C1").Select
    Selection.AutoFilter
    ActiveSheet.Range("$A$1:$C$6").AutoFilter Field:=1, Criteria1:="1"
    ActiveSheet.Range("$A$1:$C$6").AutoFilter Field:=2, Criteria1:="2"
    ActiveSheet.Range("$A$1:$C$6").AutoFilter Field:=3
End Sub

Y este fue el resultado.


q w e
1 2 1

Para seleccionar los valores nulos (sin dato) de la columna A va esto:
ActiveSheet.Range("$A$1:$C$6").AutoFilter Field:=1, Criteria1:="="


Cordialmente, Marciana
Arriba
AnSanVal Ver desplegable
Administrador
Administrador
Avatar

Unido: 16/Marzo/2005
Localización: España
Estado: Sin conexión
Puntos: 5769
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita AnSanVal Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 06/Diciembre/2020 a las 12:54
Hola RodriguezA, hola marciana, no debemos preocuparnos demasiado por este tema. algohe no está muy dispuesta/o a dejarse ayudar.

Tened en cuenta que le pedí sólo 2 cosas sencillas (para intentar ayudarle):
1.- Una imagen (con datos inventados pero fieles)
2.- Un ejemplo claro de lo que quiere obtener con el ejemplo de la imagen aportada.

Aportó la imagen pero no dijo (de esos datos) cuales quería pasar a la otra hoja, claro que con un sólo registro... no es necesario filtrar, pero... si no se deja ayudar (está en su derecho), no podemos obligarle.


Saludos desde Tenerife.

Mi sitio_web con ejemplos Excel.
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable