filtros y ordenación

09/02/2006 - 22:19 por Playa de Chilches - atención al cliente | Informe spam
Tengo una base de datos en excel con 12 ó mas columnas y 40.000 filas ó mas
y necesito extraer información por código VBA y por eso me gustaria que
alguien me pasara un código VBA para realizar las siguientes operaciones:
Poner el autofiltro y elegir de una pequeña base de datos de columnas el nº
de columna correspondiente al filtro que quiero realizar... seguidamente
copie el resultado junto al nombre de las columnas y lo pegue en otra hoja
del mismo libro y a continuación lo ordene eligiendo tambien la columna para
ordenar y en su caso (no es lo mas importante) guardar en ese libro u otro
nuevo.
Puede darse el caso que quiera dos o mas filtros y tambien que en el momento
de ordenar se puedan elegir dos ó mas columnas para ello.
Eso me ayudaría un montón, ya que para mi trabajo lo necesito así y me
ahorraria cantidad de horas.
Sé que existen las tablas dinámicas pero no es eso lo que necesito.. perdón
y muchas, muchas gracias.
José Rafael - Valencia

Preguntas similare

Leer las respuestas

#6 Aprendiz
14/02/2006 - 12:06 | Informe spam
Buenos dias Héctor:
Tengo que decirte que PARA NADA te considero un impertinente ni me caes
gordo ni nada parecido antes al contrario creo que eres una persona muy
humana que ayudas a muchisima gente y que tienes una paciencia tipo JOB,
ademas de un magnifico profesor de excel.. Personalmente ESTOY
SUPERAGRADECIDO por la cantidad de veces que te he molestado con mis
preguntas y me has DADO MUY BUENAS SOLUCIONES, valga como ejemplo una vez
que me pasaste un código para situar una fotografia en una plantilla de
pisos, es de gran utilidad para mi trabajo y otras muchas ideas que incluso
he copiado de otros post contestados por ti y por KL ó Fernando. Así que
vaya por delante esta especie de declaración de "amor chatero profesional"
(jejeje hoy dia de San Valentin) que aunque determinadas palabras están en
mayusculas no es que esté gritando sino que las quiero subrayar.
Tienes mucha razón cuando algunos de nosotros y yo particularmente esperamos
que nos entendais (adivinéis) con nuestras preguntas que en mi caso las
escribo casi sin pensar en pleno momento de trabajo, asi que en el futuro me
pararé un momento y las redactaré mejor, espero...
En cuanto a lo que nos ocupa de mi primera exposición sobre este asunto
"filtros y ordenación"... te comento que en un libro tengo una base de datos
en una de las hojas y en otra hoja tengo una plantilla... con un botón y una
macro. El código tiene unos criterios fijos de filtrado y a mi me gustaria
elegirlos con un imputbox... cuado se ejecuta la macro me escribe en una
columna todos los números de referencia de los pisos que cumplen ese
requisito de filtrado... en las columnas contiguas mediante buscarV que
extrae de la base de datos el resto de información y asi tengo el listado
que necesito... pero todavia un problema como el listado se ordena
automaticamente por nº de referencia, no está ordenado como yo quisiera
algunas veces, por ejemplo por obras, alturas ó nº de habitaciones, ya que
ese listado sirve para vender y se necesita rápidamente encontrar el
apartamento que se necesita. Esta ordenación la hago a mano y tambien me
gustaria hacerla por una macro eligiendo con el inputbox los campos a
ordenar... te copia un poco de la plantilla y mas abajo el código. Gracias
por todo una vez mas
José Rafael - Valencia (España)

Ref. Descripción Precio Garaje Trastero Habit. Altura M2 (incl.terr.)
Tipo Identif. S
5.115 Complejo pisc. comunit. Cervantes, 101-109 27.187.845 2 1
66,83 RV Esc.2 pta. 6 X
5.116 Complejo pisc. comunit. Cervantes, 101-109 24.449.400 1 1
53,62 RV Esc.3 pta. 7 X
5.117 Complejo pisc. comunit. Cervantes, 101-109 32.640.000 2 1
73,76 RV Esc.3 pta. 8 X
5.159 Complejo pisc. comunit. Cervantes, 101-109 35.674.653 2.500.000
120.000 x m2 3 1 88,86 RV Esc.1 pta. 3 X
5.160 Complejo pisc. comunit. Cervantes, 101-109 36.175.244 2.500.000
120.000 x m2 3 2 88,86 RV Esc.0 pta. 5 X



Sub TOTALALAVENTA()
'
' TOTAL A LA VENTA Macro
' Macro grabada el 06/08/2004 José Rafael Frasquet
'

Application.ScreenUpdating = False
Sheets("IMPRESIÓN PRECIOS").Select
Range("B5:B64").Select
Selection.ClearContents
ActiveWindow.ScrollWorkbookTabs Position:=xlFirst
Sheets("Base de datos").Select
Range("A1").Select
Selection.AutoFilter

Selection.AutoFilter Field:(, Criteria1:="="
Selection.AutoFilter Field:', Criteria1:="="

'Selection.AutoFilter Field:=5, Criteria1:="ON" no funciona???
Range("A4:A220").Select
Selection.Copy
Sheets("Impresión listados").Select
Range("B5").Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:_
False, Transpose:=False

Application.CutCopyMode = False
With ActiveSheet.PageSetup
.LeftHeader = ""
.CenterHeader = "&""Arial,Negrita""&UTOTAL A LA VENTA"
.RightHeader = ""
.LeftFooter = "&""Arial,Cursiva""&6&F &A "
.CenterFooter = "&""Arial,Negrita Cursiva""&6&D &T"
.RightFooter = "&""Arial,Cursiva""&6jrfl"
.LeftMargin = Application.InchesToPoints(0.196850393700787)
.RightMargin = Application.InchesToPoints(0)
.TopMargin = Application.InchesToPoints(0.590551181102362)
.BottomMargin = Application.InchesToPoints(0.590551181102362)
.HeaderMargin = Application.InchesToPoints(0.196850393700787)
.FooterMargin = Application.InchesToPoints(0.196850393700787)
.PrintHeadings = False
.PrintGridlines = False
.PrintComments = xlPrintNoComments
.CenterHorizontally = False
.CenterVertically = False
.Orientation = xlPortrait
.Draft = False
.PaperSize = xlPaperA4
.FirstPageNumber = xlAutomatic
.Order = xlDownThenOver
.BlackAndWhite = False
.Zoom = 92
End With
ActiveWindow.SelectedSheets.PrintPreview
'ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True.. no
funciona
End Sub








"Héctor Miguel" escribió en el mensaje
news:
hola, José Rafael !

> Los botones y las listas podrian estar en la misma hoja base de datos o


en una nueva llamada p.e. "Listados".
> y para saber los criterios: o bien uno o varios inputbox o cuadros de


dialogo o una llamada(s) con buscarV
> poniendo el nº de lista para que te devuelva la columna o su nombre,


segun interese... (creo que esta opcion es peor..)
> inserto los comentarios mas abajo...
[p] si lista1 contiene todas las columnas [supongo de la hoja con la base


de datos]...
[R] si, de la hoja con la base de datos.
[p] => CUAL es el criterio para el filtrado ? y... quien 'dice'


[o de donde se toma] dicho criterio ?
[R] inputbox (hasta tres p.ej.)
[p] => CUAL es [o de donde se toma] el orden ?
[R] inputbox (hasta tres p.ej.)
[p] que significa 'varios criterios' para filtrar y [ademas] para ordenar


?
>> varias veces ?... varias columnas ?... criterios combinados


?... ???
[R] respondido con los inputbox

a veces [como que 'yo mismo']... me caigo mal por andar de 'pregunton'


:)) evitando [o tratando de evitar] la 'fatiga de suponer'...
[cuando 'considero' que -todavia- 'existe']... un amplio 'abanico' de


posibilidades/eventualidades/imponderables/situaciones/... [p.e.]:

1) me imagino que por los -> 'inputbox (hasta tres p.ej)'... -> te


refieres -exclusivamente- a CUALES serian las columnas... -?-
-> a las cuales se sujetaria el codigo para 'filtrar' [de la base de


datos] y 'ordenar' [algun listado 'resultante'] -???-

2) [sin embargo]... NO 'VEO' que hayas comentado cuales serian -> LOS


CRITERIOS [de los autofiltros NI del 'orden' al listado final] -?-
-> te recuerdo que por autofiltros puedes 'combinar' -hasta- 2


criterios, con los cuales puedes 'condicionar' [el filtrado] a...
a) que se cumplan AMBOS [cuando usas el operaror 'Y']... o que se


cumpla -al menos- UNO de ellos [con el operador 'O'] ;)
b) los criterios pudieran ser 'unicos/excluyentes' -> igual,


menor, etc o 'incluyentes' -> que [NO]/contenga/inicie, etc.

3) tampoco has comentado si en la base de datos se podrian encontrar...


numeros/textos/ambos/FECHAS/... ???
con lo cual, los criterios/operadores pudieran llegar a 'entrar en


conflictos' [por codigo] sobre todo cuando 'hablamos' de fechas <= OJO

4) usar terminos 'ambiguos' como: 'pudiera ser uno u otro'... 'me da


igual'... etc. -> AMPLIA el -posible- 'abanico de imponderables'...
y lograr que en una [o en pocas] propuestas de solucion... se de 'en


el clavo' de la situacion 'real' que se pretende resolver -?-

5) SI [probablemente] ya te he caido 'gordo' [a ti tambien, como 'a mi


mismo']... :-((
hace poco hice un comentario que +/- 'reza' como sigue: -> si quieres


seguir por el camino de... 'adivinen lo que estoy pensando'... :D

6) no es necesario que 'escribas un libro' [para exponer los detalles de


tu problema en la consulta]... NI que adjuntes un archivo :))
-> [cuando tengas un tiempecito]... revisa:


http://spaces.msn.com/members/excel4all

7) si 'ya llegaste hasta este punto' :)) solo espero que no me


consideres un... 'impertinente' ? :))

y [finalmente]... si cualquier duda [o te animas a exponer los detalles


'del tintero']... comentas ?
saludos,
hector.


Respuesta Responder a este mensaje
#7 Héctor Miguel
16/02/2006 - 03:01 | Informe spam
hola, José Rafael !

1) del codigo que expones, 'autofiltras' por los registros que tengan 'vacias' sus celdas en las columnas 27 y 28... que son ?????
2) el autofiltro que 'NO funciona' [Criteria1:="ON" no funciona???], esta tratando de filtrar de la columna 5 la palabra ON [existe ???]
3) para poder 'proponer' inputboxes para los criterios del autofiltro [y tambien de la ordenacion]... seria necesario conocer...
-> cual es el campo que se va a autofiltrar ? [y cuales serian los 'posibles' valores Y SU TIPO en ese campo] -?-
4) ademas de que la macro SOLO copia la columna 'A' resultante de los autofiltros...
-> que mas datos 'existen' [o como se llenan] en la hoja donde 'reportas' las existencias disponibles para ventas ??? [rangos, etc]
5) suponiendo que el modelo es mas complejo para una exposicion 'textual' de la problematica...
[si lo prefieres] podrias enviarme una copia [ZIP] -?- solo quita de la direccion que aparece el 'NO...SPAM...PLS' :D

saludos,
hector.

... sobre este asunto "filtros y ordenación"
... en un libro tengo una base de datos en una de las hojas y en otra... una plantilla con un boton y una macro.
... tiene unos criterios fijos de filtrado y a mi me gustaria elegirlos con un imputbox
... cuado se ejecuta... escribe en una columna... los numeros de referencia de los pisos que cumplen ese requisito de filtrado
... en las columnas contiguas... buscarV... extrae de la base de datos el resto de informacion y asi tengo el listado que necesito
... como el listado se ordena automaticamente por... referencia, no esta ordenado como yo quisiera algunas veces
... ese listado sirve para vender y se necesita rapidamente encontrar el apartamento que se necesita.
... ordenacion la hago a mano y tambien me gustaria hacerla por una macro eligiendo con el inputbox los campos a ordenar
... te copia un poco de la plantilla y mas abajo el codigo...
... [fracciones del codigo] ...
...
Selection.AutoFilter Field:(, Criteria1:="="
Selection.AutoFilter Field:', Criteria1:="="
'Selection.AutoFilter Field:=5, Criteria1:="ON" no funciona???
...
ActiveWindow.SelectedSheets.PrintPreview
'ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True.. no funciona ...
Respuesta Responder a este mensaje
#8 Aprendiz
17/02/2006 - 13:00 | Informe spam
Hola Héctor, respondo entre lineas

"Héctor Miguel" escribió en el mensaje
news:
hola, José Rafael !

1) del codigo que expones, 'autofiltras' por los registros que tengan


'vacias' sus celdas en las columnas 27 y 28... que son ?????

La columna 27 indica si un piso esta o no "Reservado" (esta es la palabra
que figura en la correspondiente celda de la columna ó por el contrario
celda vacia)
La columna 28 indica si un piso esta o no "Vendido" (esta es la palabra que
figura en la correspondiente celda de la columnaó por el contrario celda
vacia)


2) el autofiltro que 'NO funciona' [Criteria1:="ON" no funciona???], esta


tratando de filtrar de la columna 5 la palabra ON [existe ???]

Si existe. En la columna 5 es el tipo de piso que es, "ON" significa Obra
Nueva y está indicado asi en las celdas donde corresponde este tipo de piso.
Lo contrario es "SM" que significa Segunda Mano y tambien puede ser "RV"
(estos son las tres posibilidades de esta columna)

3) para poder 'proponer' inputboxes para los criterios del autofiltro [y


tambien de la ordenacion]... seria necesario conocer...
-> cual es el campo que se va a autofiltrar ? [y cuales serian los


'posibles' valores Y SU TIPO en ese campo] -?-
Ademas de las columnas 27, 28 y 5 ya expuestas... existen otras columnas
para posible filtrado como por ejemplo columna 12 altura que puede ser
Planta baja, 1, 2, 3 y Dúp-Ático. todos tipo texto, supongo que debe ser
así por la mezcla... y si el inputbox lo requiere apliquemos como texto
siempre
La columna 13 es la que distingue el nº de habitaciones 1, 2, 3, 4. tipo
númerico ó texto me dá igual en este caso...
y así unas cuantas mas con o sin piscina, cerca o lejos de la playa, etc...
en realidad me gustaria tener un sistema para elegir el campo a filtrar...
pero si es complicado renuncio a esta última posibilidad.

4) ademas de que la macro SOLO copia la columna 'A' resultante de los


autofiltros...
-> que mas datos 'existen' [o como se llenan] en la hoja donde


'reportas' las existencias disponibles para ventas ??? [rangos, etc]

El resto de los datos los extraigo (o lleno en la hoja donde se reporta como
dices) con BUSCARV partiendo de los códigos que me ha copiado la macro en la
columna A, es decir ya filtrados


5) suponiendo que el modelo es mas complejo para una exposicion 'textual'


de la problematica...
[si lo prefieres] podrias enviarme una copia [ZIP] -?- solo


quita de la direccion que aparece el 'NO...SPAM...PLS' :D




Despues de esto no creo necesario enviarte el libro por email, no obstante
si lo necesitaras te lo pasaría pesa aprox 17 mb.

Bueno Héctor buen quebradero de cabeza eh?. disculpas y gracias por
todo

José Rafael






saludos,
hector.

> ... sobre este asunto "filtros y ordenación"
> ... en un libro tengo una base de datos en una de las hojas y en otra...


una plantilla con un boton y una macro.
> ... tiene unos criterios fijos de filtrado y a mi me gustaria elegirlos


con un imputbox
> ... cuado se ejecuta... escribe en una columna... los numeros de


referencia de los pisos que cumplen ese requisito de filtrado
> ... en las columnas contiguas... buscarV... extrae de la base de datos


el resto de informacion y asi tengo el listado que necesito
> ... como el listado se ordena automaticamente por... referencia, no esta


ordenado como yo quisiera algunas veces
> ... ese listado sirve para vender y se necesita rapidamente encontrar el


apartamento que se necesita.
> ... ordenacion la hago a mano y tambien me gustaria hacerla por una


macro eligiendo con el inputbox los campos a ordenar
> ... te copia un poco de la plantilla y mas abajo el codigo...
> ... [fracciones del codigo] ...
> ...
> Selection.AutoFilter Field:(, Criteria1:="="
> Selection.AutoFilter Field:', Criteria1:="="
> 'Selection.AutoFilter Field:=5, Criteria1:="ON" no funciona???
> ...
> ActiveWindow.SelectedSheets.PrintPreview
> 'ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True..


no funciona ...


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