Estadísticas de Google Analytics

    generado por GADWP 

    Material registrado:

    Safe Creative #1709190281730

Eliminar filas según contenidos en columna

Análisis de datos con Excel

Uno de los dos grandes tipos de trabajo que se pueden hacer con solvencia a través de las hojas de cálculo es cálculo; el otro es el análisis de datos. En este caso se nos plantea un problema que se inclina más hacia el análisis, y más concretamente en los estadios preliminares del análisis, como puede ser la limpieza y corrección de datos previos. Me pregunta José Miguel, desde Almería, sobre un caso particular en el que tenemos que eliminar las filas de una tabla en cuyas columnas E y F, por ejemplo, figure un cero.

Si estuviéramos hablando solo de una columna de referencia, y como nuestra intención es eliminar esas filas, sin duda yo optaría por seleccionar la zona de referencia, o sea la columna que contiene esos ceros, pulsar CTRL+B, o en la Cinta de Excel ir a INICIO y luego BUSCAR, poner cero como argumento de búsqueda y encontrar. Así nos quedan seleccionadas las celdas de esa columna que contienen cero. Luego en la misma pestaña de INICIO vamos al grupo de herramientas CELDAS/ELIMINAR/ELIMINAR FILAS DE HOJA. Problema resuelto.

Como queremos examinar dos columnas y ver en qué filas esas dos columnas valen cero, podemos crear una columna auxiliar de control y simplemente comprobar con una fórmula lógica si las dos celdas son cero, =Y(F2=0;G2=0), o más sencillo aún, sumar =F2+G2. Así vuelvo a tener el problema reducido a una columna y estoy en el caso anterior. Problema resuelto.

Pero también sabemos de la flexibilidad y variedad de aproximaciones que las hojas de cálculo nos permiten para resolver un mismo problema. Podemos hacer como José Miguel y aplicar dos filtros consecutivos, o un solo filtro a la columna de control antes creada. Podemos incluso aplicar un filtro avanzado, que es algo que no hice en el video, pero que haré en un tutorial que estoy preparando.

Formato condicional en Excel
Con una columna de control auxiliar es fácil transformar las dos condiciones en una. Las resaltamos con formato condicional y las buscamos con CTRL+B

Eliminar filas por condiciones con macros

Recuperamos en primer lugar una macro que ya he usado en varios problemas de este tipo y la adaptamos al caso que nos ocupa, pero suponiendo que hemos reducido el problema de las dos columnas a nuestra columna auxiliar de control. Este es el código:

Subrutina para eliminar filas por condiciones
 
Sub EliminaFilas()
'Seleccionamos la región de trabajo
Dim i As Integer, nfilas As Integer
nfilas = ActiveSheet.Cells(1, 1).CurrentRegion.Rows.Count
'Introducimos los datos de decisión
qCol = InputBox("Columna del criterio")
qCrit = InputBox("Criterio")
'Ejecutamos bucle y acción de borrado
For i = nfilas To 2 Step -1
    Cells(i, qCol).Select
        If Cells(i, qCol) =
CDbl(qCrit) Then
            ActiveCell.EntireRow.Select
            Selection.Delete
        End If
Next i
End Sub

Otra solución alternativa con macros

Al reencontrarme con problemas viejos, siempre me gusta aprovechar esa ventaja de las hojas de cálculo, de Excel en particular, que es la flexibilidad, y aproximarme al problema de otra manera. Lo dejo en el código adjunto y esta vez teniendo en cuenta que se hará la comprobación en las columnas correspondientes a los índices 6 y 7, o sea la F y la G. Si las de tu caso particular son distintas, tienes que cambiar esos números.

Variante
 
Sub prueba1()
Cells(1, 1).CurrentRegion.Select
        For Each Row In Selection.Rows
            If Row.Cells(6) = 0 Then
                If Row.Cells(7) = 0 Then
                    Row.EntireRow.Select
                    Selection.Delete
                End If
            End If
        Next Row
End Sub

Comments

This post currently has 4 responses

  • Buenos días,
    gran aporte. Llevaba tiempo buscando la forma de borrar una serie de filas con una macro. He usado el segundo código, ya que lo entiendo mejor y me parece más eficiente, sin embargo tiene un pequeño problema.
    Cada iteración finaliza avanzando a la siguiente fila, (Next Row), eso hace que si tienes dos filas seguidas en las que el criterio de selección valga cero (en mi caso son una diez filas seguidas con valor cero), no la detecte y haya que ejecutar la macro varias veces. ¿Se te ocurre alguna forma de hacer que se eliminen todas con una sola pasada?

  • Hola. Sí, en efecto. La segunda macro tiene ese problema. Creo recordar que me refiero a él en el video. Lo mejor sería no ir borrando una a una, sino ir construyendo un rango por unión de filas, para finalmente seleccionarlo todo y borrarlo de una vez. A ver si tengo tiempo uno de estos días y hago un video sintetizando todo lo visto sobre este tema de eliminación de filas por condiciones.

  • Buenos dias,

    Tengo una base de datos, necesito eliminar todas las filas que en la columna L contenga EMPRESAS Y NEGOCIOS, alguien podria guiarme en que debo hacer?

    Mil gracias

    • Voy a suponer que tiene la «base de datos» en una tabla de una hoja de Excel. Seleccione la columna L, con esa selección pulse Buscar y Reemplazar, en el cuadro de búsqueda flotante que aparece escriba «EMPRESAS Y NEGOCIOS» y pulse «Buscar todas». En la zona inferior editable de ese cuadro flotante de búsqueda, seleccione todas las ocurrencias arrastrando con el botón derecho del ratón pulsado. Eso le seleccionará todas las celdas sensibles de la columna L. Depués vaya al grupo de herramientas llamado «Celdas», pulse la flecha desplegable de la herramienta «Eliminar» y ahí la subherramienta «Eliminar Filas de Hoja». Eso le eliminará las filas relacionadas con esas celdas, que era lo que usted quería.
      Saludos desde Madrid.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Sidebar



"

Si continuas utilizando este sitio, significa que aceptas el uso de cookies. más información

Los ajustes de cookies de esta web están configurados para "permitir cookies" y así ofrecerte la mejor experiencia de navegación posible. Si sigues utilizando esta web sin cambiar tus ajustes de cookies o haces clic en "Aceptar" estarás dando tu consentimiento a esto.

Cerrar