Foros del Web » Soporte técnico » Ofimática »

filtrar una lista

Estas en el tema de filtrar una lista en el foro de Ofimática en Foros del Web. Bueno, ya escribo aquí porque me llevo peleando con una macro dos días y no consigo avanzar. Mirad, a ver si se os ocurre como ...
  #1 (permalink)  
Antiguo 20/08/2008, 03:37
 
Fecha de Ingreso: septiembre-2007
Ubicación: Badajoz City
Mensajes: 126
Antigüedad: 16 años, 7 meses
Puntos: 0
filtrar una lista

Bueno, ya escribo aquí porque me llevo peleando con una macro dos días y no consigo avanzar.

Mirad, a ver si se os ocurre como hacerlo, que seguro que sí:

Tengo una columna con las provincias donde hay obras, y claro son como 200 obras y solo unas cuantas provincias.

Me gustaría generar una lista con las provincias pero que en la nueva lista no se repitieran las provincias, para luego poder usarlas como referencias para otras fórmulas.

No sé si me explico, voy a poner un ejemplo:

En la columna A tengo:
Cita:
Lugo
Orense
Orense
Lugo
Pontevedra
Orense
Lugo
A Coruña
Lugo
A Coruña
Y quiero que en la B se genere con una macro (o si se puede sin macro pues mejor), lo siguiente:

Cita:
Lugo
Orense
Pontevedra
A Coruña
(el orden me da igual)

¿me podéis ayudar?
  #2 (permalink)  
Antiguo 20/08/2008, 06:45
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
De acuerdo Respuesta: filtrar una lista

Se me ocurrió hacer algo así, no sé si sea la mejor forma, pero funciona .
Código PHP:
Sub NoRepeat(vRange As RangevReturn As Range)
Dim All() As String
ReDim All
(0) As String
Dim AddItem 
As Boolean
Dim SecondExec 
As Boolean
Dim Looping 
As Integer
Dim This 
As Range
For Each This In vRange.Cells
    
If This "" Then Exit For
    If 
SecondExec Then
        AddItem 
True
        
For Looping 0 To UBound(All)
            If 
This All(LoopingThen
                AddItem 
False
                
Exit For
            
End If
        
Next Looping
        
If AddItem Then
            ReDim Preserve All
(UBound(All) + 1)
            
All(UBound(All)) = This
            Cells
(vReturn.Row UBound(All), vReturn.Column) = This
        End 
If
    Else
        
SecondExec True
        All
(0) = This
        vReturn 
All(0)
    
End If
Next This
End Sub 
Los dos parámetros que recibe es el Rango en el que buscar y el segundo parámetro es la primera celda donde debe imprimir el resultado, después, va a imprimir consecutivamente debajo de la primera.

En tu ejemplo, la llamada sería:
Código:
NoRepeat Range("A1:A10"), Range("B1")
En este caso hay que considerar que no funciona como una fórmula, habrá que llamarla en el evento Change de la Hoja.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 20/08/2008, 11:56
Avatar de abrahamvj  
Fecha de Ingreso: julio-2006
Ubicación: Lima, Peru
Mensajes: 708
Antigüedad: 17 años, 9 meses
Puntos: 18
Respuesta: filtrar una lista

Y bueno, siguiendo con el punto, una forma de hacerlo sin macros, seria usar filtros avanzados de registor unico, y usando la opcion "copiar a otro lugar"

Abraham
  #4 (permalink)  
Antiguo 21/08/2008, 05:52
 
Fecha de Ingreso: septiembre-2007
Ubicación: Badajoz City
Mensajes: 126
Antigüedad: 16 años, 7 meses
Puntos: 0
Respuesta: filtrar una lista

Muchas gracias a los dos, me habéis ayudado muchísimo!!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:11.