Como Filtrar datos contenidos en mas de una Fila?

30/11/2007 - 15:41 por Nikar | Informe spam
yo tengo una base de datos en la cual los datos q necesito filtrar estan en 2
filas separadas. Es decir

NombreApellido-Vendedor
Nombre del hijoapellidoetc

y necesitaria filtrar por vendedor esas 2 filas, mi otro problema es q la
gente q tiene mas de 1 hijo tiene mas de 2 filas. Yo algo de idea de VB tengo
pero creo q no es ni cerca suficiente...

Se agradece cualquier ayudita :D

Preguntas similare

Leer las respuestas

#1 David
30/11/2007 - 16:53 | Informe spam
Suponiendo que se cumplen las siguientes condiciones:

1. Tu "base de datos" principia en la celda A1.

2. En tu listado no hay filas o columnas completas en blanco.


Si la primera condición no se cumple, en el código que te paso abajo,
modifica la sigiente línea:
Rango = Range("A1").CurrentRegion.Address
con la dirección de la cenda inicial de tu listado.

La segunda condición es muy importante para que mi propuesta funcione. No
deberás obviarla. Puedes verificarla rápidamente si haces clic en una celda
(no vacía) de tu listado, y pulsas Control - E (si tu Excel está en inglés,
debería ser Control - A).

Y ¡al fin! Aquí te va el código:

Sub FiltrarVendedor()
'Preparando variables
Dim Rango As String, Vendedor As String
Dim Ocultar As Boolean, Fila As Long

'Estableciendo valores iniciales
Rango = Range("A1").CurrentRegion.Address
Vendedor = InputBox("Vendedor")

If Vendedor = "" Then
'Si no se ingresó vendedor, se muestra todo
For Fila = 2 To Range(Rango).Rows.Count
Cells(Fila, 3).EntireRow.Hidden = False
Next Fila
Else
For Fila = 2 To Range(Rango).Rows.Count
'Se determina si el vendedor coincide
If Cells(Fila, 3) = Vendedor Then
Ocultar = True
Else
If Len(Cells(Fila, 3)) > 0 Then
Ocultar = False
End If
End If
'Se oculta o se muestra la fila
If Ocultar Then
Cells(Fila, 3).EntireRow.Hidden = False
Else
Cells(Fila, 3).EntireRow.Hidden = True
End If
Next Fila
End If
End Sub


Observa que cuando no se ingresa el nombre de un vendedor, cuando ejecutes
el código se mostrará nuevamente toda tu información.




"Nikar" escribió:

yo tengo una base de datos en la cual los datos q necesito filtrar estan en 2
filas separadas. Es decir

NombreApellido-Vendedor
Nombre del hijoapellidoetc

y necesitaria filtrar por vendedor esas 2 filas, mi otro problema es q la
gente q tiene mas de 1 hijo tiene mas de 2 filas. Yo algo de idea de VB tengo
pero creo q no es ni cerca suficiente...

Se agradece cualquier ayudita :D
Respuesta Responder a este mensaje
#2 Nikar
30/11/2007 - 17:58 | Informe spam
"David" escribió:

Suponiendo que se cumplen las siguientes condiciones:

1. Tu "base de datos" principia en la celda A1.

2. En tu listado no hay filas o columnas completas en blanco.


Si la primera condición no se cumple, en el código que te paso abajo,
modifica la sigiente línea:
Rango = Range("A1").CurrentRegion.Address
con la dirección de la cenda inicial de tu listado.

La segunda condición es muy importante para que mi propuesta funcione. No
deberás obviarla. Puedes verificarla rápidamente si haces clic en una celda
(no vacía) de tu listado, y pulsas Control - E (si tu Excel está en inglés,
debería ser Control - A).

Y ¡al fin! Aquí te va el código:

Sub FiltrarVendedor()
'Preparando variables
Dim Rango As String, Vendedor As String
Dim Ocultar As Boolean, Fila As Long

'Estableciendo valores iniciales
Rango = Range("A1").CurrentRegion.Address
Vendedor = InputBox("Vendedor")

If Vendedor = "" Then
'Si no se ingresó vendedor, se muestra todo
For Fila = 2 To Range(Rango).Rows.Count
Cells(Fila, 3).EntireRow.Hidden = False
Next Fila
Else
For Fila = 2 To Range(Rango).Rows.Count
'Se determina si el vendedor coincide
If Cells(Fila, 3) = Vendedor Then
Ocultar = True
Else
If Len(Cells(Fila, 3)) > 0 Then
Ocultar = False
End If
End If
'Se oculta o se muestra la fila
If Ocultar Then
Cells(Fila, 3).EntireRow.Hidden = False
Else
Cells(Fila, 3).EntireRow.Hidden = True
End If
Next Fila
End If
End Sub


Observa que cuando no se ingresa el nombre de un vendedor, cuando ejecutes
el código se mostrará nuevamente toda tu información.






Muchas Gracias pero no me exprese bien porque no se cumpliria tu segunda
condicion debido a que:

NombreApellido-Vendedor
Nombre del hijoapellidoetc
Nombre2--Apellido2Vendedor2
Nombre2 del hijo-apellido 2etc

de todas formas no pude probar tu codigo porque estoy en casa y tengo la
base en el trabajo...Gracias igual
Respuesta Responder a este mensaje
#3 David
30/11/2007 - 19:44 | Informe spam
Ok. Entonces supongamos que la última fila de tu listado está dada por un
nombre de hijo en la columna A. Cambiemos el código por:...

Sub FiltrarVendedor()
Application.ScreenUpdating = False

'Preparando variables
Dim Rango As String, Vendedor As String
Dim Ocultar As Boolean, Fila As Long
Dim UltimaFila As Long

'Estableciendo valores iniciales
Rango = Range("A1").CurrentRegion.Address
Vendedor = InputBox("Vendedor")
UltimaFila = Range("A65536").End(xlUp).Row

If Vendedor = "" Then
'Si no se ingresó vendedor, se muestra todo
For Fila = 2 To UltimaFila
Cells(Fila, 3).EntireRow.Hidden = False
Next Fila
Else
For Fila = 2 To UltimaFila
'Se determina si el vendedor coincide
If Cells(Fila, 3) = Vendedor Then
Ocultar = True
Else
If Len(Cells(Fila, 3)) > 0 Then
Ocultar = False
End If
End If
'Se oculta o se muestra la fila
If Ocultar Then
Cells(Fila, 3).EntireRow.Hidden = False
Else
Cells(Fila, 3).EntireRow.Hidden = True
End If
Next Fila
End If

Application.ScreenUpdating = True
End Sub


...y comentas cuando lo hayas probado.


PD:
Observa que las modificaciones fueron: crear variable para la última línea,
y asignarle un valor, que corresponde al encontrado al desplazarse hacia
arriba desde la última fila de Excel en la columna A. Las líneas de
Application.screenupdating son sólo para hacer más rápido el código.

Saludos.



"Nikar" escribió:



"David" escribió:

> Suponiendo que se cumplen las siguientes condiciones:
>
> 1. Tu "base de datos" principia en la celda A1.
>
> 2. En tu listado no hay filas o columnas completas en blanco.
>
>
> Si la primera condición no se cumple, en el código que te paso abajo,
> modifica la sigiente línea:
> Rango = Range("A1").CurrentRegion.Address
> con la dirección de la cenda inicial de tu listado.
>
> La segunda condición es muy importante para que mi propuesta funcione. No
> deberás obviarla. Puedes verificarla rápidamente si haces clic en una celda
> (no vacía) de tu listado, y pulsas Control - E (si tu Excel está en inglés,
> debería ser Control - A).
>
> Y ¡al fin! Aquí te va el código:
>
> Sub FiltrarVendedor()
> 'Preparando variables
> Dim Rango As String, Vendedor As String
> Dim Ocultar As Boolean, Fila As Long
>
> 'Estableciendo valores iniciales
> Rango = Range("A1").CurrentRegion.Address
> Vendedor = InputBox("Vendedor")
>
> If Vendedor = "" Then
> 'Si no se ingresó vendedor, se muestra todo
> For Fila = 2 To Range(Rango).Rows.Count
> Cells(Fila, 3).EntireRow.Hidden = False
> Next Fila
> Else
> For Fila = 2 To Range(Rango).Rows.Count
> 'Se determina si el vendedor coincide
> If Cells(Fila, 3) = Vendedor Then
> Ocultar = True
> Else
> If Len(Cells(Fila, 3)) > 0 Then
> Ocultar = False
> End If
> End If
> 'Se oculta o se muestra la fila
> If Ocultar Then
> Cells(Fila, 3).EntireRow.Hidden = False
> Else
> Cells(Fila, 3).EntireRow.Hidden = True
> End If
> Next Fila
> End If
> End Sub
>
>
> Observa que cuando no se ingresa el nombre de un vendedor, cuando ejecutes
> el código se mostrará nuevamente toda tu información.
>
>
>

Muchas Gracias pero no me exprese bien porque no se cumpliria tu segunda
condicion debido a que:

NombreApellido-Vendedor
Nombre del hijoapellidoetc
Nombre2--Apellido2Vendedor2
Nombre2 del hijo-apellido 2etc

de todas formas no pude probar tu codigo porque estoy en casa y tengo la
base en el trabajo...Gracias igual
Respuesta Responder a este mensaje
#4 Nikar
03/12/2007 - 18:11 | Informe spam
Te mande un mail con los problemas q tube y una copia de la base, los
problemas fueron los siguientes:

-Me oculta toda la base, sin dejar visibles los datos con el vendedor
-Cuando trato de "mostrar" lo oculto no puedo

Gracias
Respuesta Responder a este mensaje
#5 David
03/12/2007 - 20:56 | Informe spam
Tus hoja resulta más compleja de lo que parecía, pero viéndola se puede
determinar lo que falla en el código anterior.

Prueba sustituirlo por lo siguiente (resalté las líneas que tuvieron cambios):

Sub FiltrarVendedor()
Application.ScreenUpdating = False

'Preparando variables
Dim Rango As String, Vendedor As String
Dim Ocultar As Boolean, Fila As Long
Dim UltimaFila As Long

'Estableciendo valores iniciales
Rango = Range("G3").CurrentRegion.Address
Vendedor = InputBox("Vendedor")
UltimaFila = Range("G65536").End(xlUp).Row '***
CAMBIADO ***

If Vendedor = "" Then
'Si no se ingresó vendedor, se muestra todo
Rango = ActiveCell.Address '***
CAMBIADO ***
Range("A2:A65536").Select '***
CAMBIADO ***
Selection.EntireRow.Hidden = False '***
CAMBIADO ***
Range(Rango).Activate '***
CAMBIADO ***
Else
For Fila = 2 To UltimaFila
'Se determina si el vendedor coincide
If Cells(Fila, 7).Value = Vendedor Then '***
CAMBIADO ***
Ocultar = True
Else
If UCase(Cells(Fila, 7).Value) = "VENDEDOR" Then '***
CAMBIADO ***
Ocultar = False
End If
End If
'Se oculta o se muestra la fila
If Ocultar Then
Cells(Fila, 7).EntireRow.Hidden = False
Else
Cells(Fila, 7).EntireRow.Hidden = True
End If
Next Fila
End If

Application.ScreenUpdating = True
End Sub

PD:
Observa que para "desocultar" tus datos, debes ejecutar el procedimiento y
simplemente aceptar el cuadro de diálogo de la pregunta, sin haber respondido
nada...

Espero que todo vaya bien, si no es así, comentas nuevamente.

Saludos.



"Nikar" escribió:

Te mande un mail con los problemas q tube y una copia de la base, los
problemas fueron los siguientes:

-Me oculta toda la base, sin dejar visibles los datos con el vendedor
-Cuando trato de "mostrar" lo oculto no puedo

Gracias
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida