Ayuda en Excel

23/05/2006 - 15:38 por Edison Torres | Informe spam
Hola, tengo una hoja en la cual tengo ingresado informacion desde la fila 5
hasta las 30000 y lo tengo codificado por numero de cedula, ahora necesito
algun codigo el cual si la columna almuerzo(F4) o merienda(G4) tiene algun
valor se me active toda la fila caso contrario se me oculte.
Mucha gracias.

Preguntas similare

Leer las respuestas

#1 KL
23/05/2006 - 17:27 | Informe spam
Hola Edison,

Una forma muy eficiente es usando el Filtro Avanzado.

Suponiendo que...
1) tu base de datos esta en el rango [A4:J(n)] donde (n) es el numero de la ultima fila
2) todas las columnas tienen titulos en la fila [4]
3) todos los registros tienen el numero de cedula en la columna [A]
4) no hay filas totalmente vacias intermedias

Prueba lo siguiente:

con la hoja de la base de datos activada...
1) asegurate que la celda [A1] esta totalmente vacia
2) en la celda [B1] pon la siguiente formula:
=O(F5<>"";G5<>"")
3) haz clic derecho sobre el pequeno logo de Excel a la izquierda del menu 'Archivo'
4) elige la opcion 'Ver Codigo' para abrir el Editor VBA
5) una vez en el Editor VBA, ve al menu 'Insertar>Modulo...'
6) pega el siguiente codigo en la ventana mas grande a la derecha:

'Inicio codigo
Sub Filtrar()
With ActiveSheet
.[A4].CurrentRegion.AdvancedFilter _
Action:=xlFilterInPlace, _
CriteriaRange:=.[A1:A2]
End With
End Sub

Sub Mostrar()
ActiveSheet.ShowAllData
End Sub
'Fin codigo

7) pulsa Alt+F11 para volver a la hoja
8) si no tienes visualizado el cuadro de controles 'Formularios' (no se confunda con el de 'Visual Basic'), haz clic derecho sobre el area de menus de la parte de arriba
9) elige la opcion 'Formularios' para mostrar el cuadro de controles correspondiente
10) Introduce dos botones en la parte de arriba de la hoja asignandoles los procedimientos 'Filtrar' y 'Mostrar' respectivamente
11) haz pruebas.

Aqui te pongo un ejemplo: http://www.telefonica.net/web/kl/VB...ulated.xls


Saludos,
KL


"Edison Torres" wrote in message news:
Hola, tengo una hoja en la cual tengo ingresado informacion desde la fila 5
hasta las 30000 y lo tengo codificado por numero de cedula, ahora necesito
algun codigo el cual si la columna almuerzo(F4) o merienda(G4) tiene algun
valor se me active toda la fila caso contrario se me oculte.
Mucha gracias.


Respuesta Responder a este mensaje
#2 Edison Torres
23/05/2006 - 21:28 | Informe spam
Hola KL, te comento que si me funciona el codigo que me diste pero tengo un
pequeño error en el momento en que presiono mas de 2 veces la opcion de
mostrar todo me sales el siguiente error:

Se ha producido el error 1004 en tiempo de ejecucion
Error en el metodo ShowAllData de la clase worksheet

Ademas siguiendo el mismo ejemplo si deseo en la celda C3 pedir que ingrese
el numero de cedula y luego mandalo a buscar en toda la base y si lo
encuentra que me aparezca unicamente la fila de ese numero de cedula y no lo
encuentra que me mande un mensaje que diga "Numero de Cedula no se encuentra"

Muchas gracias.


"KL" escribió:

Hola Edison,

Una forma muy eficiente es usando el Filtro Avanzado.

Suponiendo que...
1) tu base de datos esta en el rango [A4:J(n)] donde (n) es el numero de la ultima fila
2) todas las columnas tienen titulos en la fila [4]
3) todos los registros tienen el numero de cedula en la columna [A]
4) no hay filas totalmente vacias intermedias

Prueba lo siguiente:

con la hoja de la base de datos activada...
1) asegurate que la celda [A1] esta totalmente vacia
2) en la celda [B1] pon la siguiente formula:
=O(F5<>"";G5<>"")
3) haz clic derecho sobre el pequeno logo de Excel a la izquierda del menu 'Archivo'
4) elige la opcion 'Ver Codigo' para abrir el Editor VBA
5) una vez en el Editor VBA, ve al menu 'Insertar>Modulo...'
6) pega el siguiente codigo en la ventana mas grande a la derecha:

'Inicio codigo
Sub Filtrar()
With ActiveSheet
.[A4].CurrentRegion.AdvancedFilter _
Action:=xlFilterInPlace, _
CriteriaRange:=.[A1:A2]
End With
End Sub

Sub Mostrar()
ActiveSheet.ShowAllData
End Sub
'Fin codigo

7) pulsa Alt+F11 para volver a la hoja
8) si no tienes visualizado el cuadro de controles 'Formularios' (no se confunda con el de 'Visual Basic'), haz clic derecho sobre el area de menus de la parte de arriba
9) elige la opcion 'Formularios' para mostrar el cuadro de controles correspondiente
10) Introduce dos botones en la parte de arriba de la hoja asignandoles los procedimientos 'Filtrar' y 'Mostrar' respectivamente
11) haz pruebas.

Aqui te pongo un ejemplo: http://www.telefonica.net/web/kl/VB...ulated.xls


Saludos,
KL


"Edison Torres" wrote in message news:
> Hola, tengo una hoja en la cual tengo ingresado informacion desde la fila 5
> hasta las 30000 y lo tengo codificado por numero de cedula, ahora necesito
> algun codigo el cual si la columna almuerzo(F4) o merienda(G4) tiene algun
> valor se me active toda la fila caso contrario se me oculte.
> Mucha gracias.
>
>

Respuesta Responder a este mensaje
#3 KL
24/05/2006 - 00:04 | Informe spam
Hola Edison,

pequeño error en el momento en que presiono mas de 2 veces la opcion de
mostrar todo me sales el siguiente error:
Se ha producido el error 1004 en tiempo de ejecucion
Error en el metodo ShowAllData de la clase worksheet



Esto se resuleve anteponiendo la instruccion "On Error Resume Next" a la "ActiveSheet.ShowAllData", asi:

Sub Mostrar()
On Error Resume Next
ActiveSheet.ShowAllData
End Sub

Ademas siguiendo el mismo ejemplo si deseo en la celda C3 pedir que ingrese
el numero de cedula y luego mandalo a buscar en toda la base y si lo
encuentra que me aparezca unicamente la fila de ese numero de cedula y no lo
encuentra que me mande un mensaje que diga "Numero de Cedula no se encuentra"



Lo del mensaje me parece un pelin excesivo/intrusivo, por lo demas podrias anadir un campo al rango de criterios:

- en [B1] pon el titulo de la columna: cedula
- en [B2] ve poniendo los numeros a filtrar (y luego pulsa el boton Filtrar)
- modifica la instruccion "Filtrar" de la siguiente manera:

Sub Filtrar()
With ActiveSheet
.[A4].CurrentRegion.AdvancedFilter _
Action:=xlFilterInPlace, _
CriteriaRange:=.[A1:B2]
End With
End Sub

Obviamente, tendras que borrar los criterios que se excluyan mutuamente.

Aqui un ejemplo: http://www.telefonica.net/web/kl/VB...ulated.xls

Saludos,
KL
Respuesta Responder a este mensaje
#4 Edison Torres
24/05/2006 - 00:46 | Informe spam
Por favor podrias ayudarme ahora con lo siguiente:

Tengo una rango de celdas desde la A4 hasta las AU50000
con columnas tales como Cedula, Nombres, Apellidos, telefono, Numero1,
Numero2 ... etc deseo lo siguiente:
1.- Que me valide si la columna numero1 o numero2 tiene dato (numeros
mayores que cero) que me muestre toda la fila sino tiene informacion dichas
columnas que se me oculte toda la fila.
2.- En la celda B2 pido ingresar el numero de cedula y que por medio de un
boton me busque dicho numero y al encontrarlo necesito que solo me aparezca
todo el dato de dicha fila y sino lo encuentra que envie mensaje de "Cedula
invalida o no encontrado".
3.- Por medio de codigo como puedo bloquear la Celda A1 para que no puedan
eliminar la informacion que ahi esta.


DE antemano te agradezco KL


"KL" escribió:

Hola Edison,

> pequeño error en el momento en que presiono mas de 2 veces la opcion de
> mostrar todo me sales el siguiente error:
> Se ha producido el error 1004 en tiempo de ejecucion
> Error en el metodo ShowAllData de la clase worksheet

Esto se resuleve anteponiendo la instruccion "On Error Resume Next" a la "ActiveSheet.ShowAllData", asi:

Sub Mostrar()
On Error Resume Next
ActiveSheet.ShowAllData
End Sub

> Ademas siguiendo el mismo ejemplo si deseo en la celda C3 pedir que ingrese
> el numero de cedula y luego mandalo a buscar en toda la base y si lo
> encuentra que me aparezca unicamente la fila de ese numero de cedula y no lo
> encuentra que me mande un mensaje que diga "Numero de Cedula no se encuentra"

Lo del mensaje me parece un pelin excesivo/intrusivo, por lo demas podrias anadir un campo al rango de criterios:

- en [B1] pon el titulo de la columna: cedula
- en [B2] ve poniendo los numeros a filtrar (y luego pulsa el boton Filtrar)
- modifica la instruccion "Filtrar" de la siguiente manera:

Sub Filtrar()
With ActiveSheet
.[A4].CurrentRegion.AdvancedFilter _
Action:=xlFilterInPlace, _
CriteriaRange:=.[A1:B2]
End With
End Sub

Obviamente, tendras que borrar los criterios que se excluyan mutuamente.

Aqui un ejemplo: http://www.telefonica.net/web/kl/VB...ulated.xls

Saludos,
KL


Respuesta Responder a este mensaje
#5 KL
24/05/2006 - 01:18 | Informe spam
Hola Edison,

Lo siento y espero que me entiendas, pero no puedo estar dando vueltas al mismo codigo toda la noche mientras vas cambiando de criterio y vas soltando nueva informacion a cuentagotas. Creo que con los dos ejemplos que te he puesto, tienes herramientas necesarias para adaptarlas tu mismo a tus necesidades cambiantes. Los codigos no es que sean excesivamente largos y enredados como para no poder entenderlos dedecando 5-10 minutos. Tambien te recomiendo que leas la Ayuda de Excel sobre los Filtros Avanzados para entender mejor como se establecen los criterios de busqueda.

Un saludo,
KL


"Edison Torres" wrote in message news:
Por favor podrias ayudarme ahora con lo siguiente:

Tengo una rango de celdas desde la A4 hasta las AU50000
con columnas tales como Cedula, Nombres, Apellidos, telefono, Numero1,
Numero2 ... etc deseo lo siguiente:
1.- Que me valide si la columna numero1 o numero2 tiene dato (numeros
mayores que cero) que me muestre toda la fila sino tiene informacion dichas
columnas que se me oculte toda la fila.
2.- En la celda B2 pido ingresar el numero de cedula y que por medio de un
boton me busque dicho numero y al encontrarlo necesito que solo me aparezca
todo el dato de dicha fila y sino lo encuentra que envie mensaje de "Cedula
invalida o no encontrado".
3.- Por medio de codigo como puedo bloquear la Celda A1 para que no puedan
eliminar la informacion que ahi esta.


DE antemano te agradezco KL


"KL" escribió:

Hola Edison,

> pequeño error en el momento en que presiono mas de 2 veces la opcion de
> mostrar todo me sales el siguiente error:
> Se ha producido el error 1004 en tiempo de ejecucion
> Error en el metodo ShowAllData de la clase worksheet

Esto se resuleve anteponiendo la instruccion "On Error Resume Next" a la "ActiveSheet.ShowAllData", asi:

Sub Mostrar()
On Error Resume Next
ActiveSheet.ShowAllData
End Sub

> Ademas siguiendo el mismo ejemplo si deseo en la celda C3 pedir que ingrese
> el numero de cedula y luego mandalo a buscar en toda la base y si lo
> encuentra que me aparezca unicamente la fila de ese numero de cedula y no lo
> encuentra que me mande un mensaje que diga "Numero de Cedula no se encuentra"

Lo del mensaje me parece un pelin excesivo/intrusivo, por lo demas podrias anadir un campo al rango de criterios:

- en [B1] pon el titulo de la columna: cedula
- en [B2] ve poniendo los numeros a filtrar (y luego pulsa el boton Filtrar)
- modifica la instruccion "Filtrar" de la siguiente manera:

Sub Filtrar()
With ActiveSheet
.[A4].CurrentRegion.AdvancedFilter _
Action:=xlFilterInPlace, _
CriteriaRange:=.[A1:B2]
End With
End Sub

Obviamente, tendras que borrar los criterios que se excluyan mutuamente.

Aqui un ejemplo: http://www.telefonica.net/web/kl/VB...ulated.xls

Saludos,
KL


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida