............ Foro Excel
Si no lo has hecho aún: REGISTRATE!!!

Descartar intervalos incluidos estrictamente en otros

Ver el tema anterior Ver el tema siguiente Ir abajo

Descartar intervalos incluidos estrictamente en otros

Mensaje por GalileoGali el Sáb Mayo 30, 2009 9:47 pm

Se ve el problema mejor en el archivo: se busca Limpiar de Intervalos Ya incluidos dentro de otros para el mismo empleado...

Acudi a un criterio FORMULA y a filtros avanzados....


_________________
GalileoGali
M.A.P. 2010-2013
Microsoft Active Professional
avatar
GalileoGali
Admin

Masculino Cantidad de envíos : 1962
Edad : 61
Ciudad - Pais : QUIROGA, Argentina
Version de Excel : 2000-2003-2007-2010
Fecha de inscripción : 24/01/2008

http://excelgali.mejorforo.net

Volver arriba Ir abajo

Re: Descartar intervalos incluidos estrictamente en otros

Mensaje por GalileoGali el Dom Mayo 31, 2009 10:58 am

Aqui me permito traer la excelente solucion que para este mismo problema aporta P@li, obviamente manejando el asunto desde VBA...
Todo el codigo es muy bueno pero me gustaría poner especial énfasis en un método para Filtrar Filas "Marcandolas" (distinguiendo las que cumplen los requisitos) en una cadena filasborrar con Separadores "|" ( o cualquier otro adecuado), para después modificar el rango de origen a partir de un array "POSICIONAL", obtenido de la cadena arrfilasborrar, gracias a la práctica funcion SPLIT
El uso de
Código:

Sub prueba()
    Dim fila As Integer
    Dim desde As Date
    Dim hasta As Date
    Dim nif As String
    Dim fila2 As Integer
    Dim desde2 As Date
    Dim hasta2 As Date
    Dim nif2 As String
    Dim rango As Range
Dim filasborrar As String
    Dim arrfilasborrar
   
    Set rango = Range("$A$5:$I$72")
    For fila = 1 To rango.Rows.Count
       
        nif = rango.Rows(fila).Cells(1, 1)
        desde = rango.Rows(fila).Cells(1, 8)
        hasta = rango.Rows(fila).Cells(1, 9)
        For fila2 = 1 To rango.Rows.Count
            nif2 = rango.Rows(fila2).Cells(1, 1)
           
            If fila2 <> fila And nif2 = nif Then
                desde2 = rango.Rows(fila2).Cells(1, 8)
                hasta2 = rango.Rows(fila2).Cells(1, 9)
                If desde2 <= desde And hasta2 >= hasta Then
                    'aca se cumple la condicion de que,
                    'fecha desde y hasta
                    'esta contenida en desde2 y hasta2
                    'pero aca no se puede eliminar,
                    'seguramente generaría un error
                    'en la continuidad del bucle
                    'Debug.Print fila, nif, desde, hasta, fila2, desde2, hasta2
                    filasborrar = filasborrar & "|" & rango.Rows(fila).Cells(1, 8).row
                End If
               
            End If
        Next
    Next
    arrfilasborrar = Split(filasborrar, "|")
    For fila = 1 To UBound(arrfilasborrar)
        'ahora si borramos las filas que no interesan
        'Rows(fila).Delete
        Rows(arrfilasborrar(fila)).Interior.Color = vbGreen
    Next

End Sub

Resalto el procedimiento porque bien puede usarse para todo tipo de Filtrados de un Rango, desde ya que una vez resuelto el valor TRUE o FALSE de una serie de condiciones o criterios

_________________
GalileoGali
M.A.P. 2010-2013
Microsoft Active Professional
avatar
GalileoGali
Admin

Masculino Cantidad de envíos : 1962
Edad : 61
Ciudad - Pais : QUIROGA, Argentina
Version de Excel : 2000-2003-2007-2010
Fecha de inscripción : 24/01/2008

http://excelgali.mejorforo.net

Volver arriba Ir abajo

Re: Descartar intervalos incluidos estrictamente en otros

Mensaje por P@li el Lun Jun 01, 2009 12:58 pm

Gali,
Te agradezco comentar mi solución.
Pero me quedo con tu propuesta, más compleja pero mucho más rápida.

Saludos.

P@li
Admin

Masculino Cantidad de envíos : 243
Edad : 33
Ciudad - Pais : Buenos Aires, Argentina
Version de Excel : Microsoft Excel 2002 (10.2614.2625)
Fecha de inscripción : 03/03/2008

Volver arriba Ir abajo

Re: Descartar intervalos incluidos estrictamente en otros

Mensaje por Contenido patrocinado


Contenido patrocinado


Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba


 
Permisos de este foro:
No puedes responder a temas en este foro.