Excel: eliminar una fila de cada diez

Aurélie -  
 Aurélie -
Hola,

<...> [Este Space es para conservar el formato HTML original, sin cambios]

Buscamos una solución que permita conservar solo una fila de cada diez (nuestras tablas contienen decenas de miles de filas; una décima sería suficiente).

La tabla consta de 3 columnas: la primera contiene números del 1 al ...; la segunda, datos numéricos; la tercera, horas.

Nos gustaría, por ejemplo, ordenar por la primera columna para conservar solo los múltiplos enteros de 10: 1, 10, 20, 30, etc.

Si alguien puede ayudarme ;-)

Utilizamos Excel 2007

Aurélie

Configuración: Windows XP / Firefox 3.6.6

2 respuestas

  1. michel_m Mensajes publicados 18903 Fecha de registro   Estado Colaborador Última intervención   3 320
     
    Bonjour,

    ¿no habrá una opción de "editar -> eliminar 9 líneas de 10"? jaja
    creo que hacerlo todo a mano es la única solución...
    avisos a los pro de Excel...


    en otras palabras: manejo perfectamente Excel y si no sé hacerlo, ¿tiene que ser necesariamente un profesional?...

    Aurélie,
    adjunta maqueta de unas 300 filas aprox.
    el código VBA está previsto para un gran número de filas

    http://www.cijoint.fr/cjlink.php?file=cj201009/cijxEG8CN4.xls

    actualmente el resultado está en la hoja2 para conservar una copia del original. si quieres eliminar el original no habrá problema para adaptar el código

    dímelo si te conviene

    cordialement,
    Michel

    :-x
    0
  2. Aurélie
     
    Parece que funciona, pero dime, ¿dónde puedo encontrar el código que has utilizado?

    Estoy lejos de ser profesional :-s

    ;-) ¡Gracias!
    0
    1. Aurélie
       
      Ok, encontré la macro, ¡es genial!!!

      Gracias, nos va a ayudar mucho.

      Si queremos hacer todo cada 50, por ejemplo, ¿dónde hay que cambiar?

      ¡Gracias de nuevo!
      0
    2. michel_m Mensajes publicados 18903 Fecha de registro   Estado Colaborador Última intervención   3 320
       
      para los 50 o 100 o 20, miro y te digo...
      0
    3. michel_m Mensajes publicados 18903 Fecha de registro   Estado Colaborador Última intervención   3 320
       
      y aquí la macro; las modificaciones están en negrita

      Const premlig As Byte = 2 ' 1° fila de la tabla Const saut As Integer = 50 ' número de filas a conservar Sub garder_1sur10() Dim nbre_lig As Long, derlig As Long, lig As Long, ind_t As Long Dim tab_10 ReDim tab_10(2, 0) 'tabla reuniendo los valores de las 3 columnas 'última fila de la tabla-array múltiple de 10 With Sheets(1) nbre_lig = Int(.Range("A" & .Cells.Rows.Count).End(xlUp).Row / saut) derlig = (nbre_lig * saut) + premlig - 1 '----- ----------------------------rellena la tabla-array 'salida 1 no es múltiplo de "saut" tab_10(0, 0) = .Cells(premlig, 1) tab_10(1, 0) = .Cells(premlig, 2) tab_10(2, 0) = .Cells(premlig, 3) ReDim Preserve tab_10(2, 1) 'línea cuyoA es múltiplo de "saut" ind_t = 1 'índice de la tabla For lig = premlig + saut - 1 To derlig Step saut tab_10(0, ind_t) = .Cells(lig, 1) tab_10(1, ind_t) = .Cells(lig, 2) tab_10(2, ind_t) = .Cells(lig, 3) ind_t = ind_t + 1 ReDim Preserve tab_10(2, ind_t) Next ReDim Preserve tab_10(2, ind_t - 1) End With 'restituye en hoja 2 Application.ScreenUpdating = False With Sheets(2) .Range("A2:C" & .Cells.Rows.Count).ClearContents .Range("A2").Resize(nbre_lig + 1, 3) = Application.Transpose(tab_10) .Range("C2").Resize(nbre_lig + 1, 1).NumberFormat = "h:mm:ss;@" .Activate End With End Sub


      lo que importa es que funcione también con 21 o 37, ya que el valor de saut puede ser cualquier entero positivo.
      0
    4. Aurélie
       
      ¡Muchas gracias! :-)
      0