Para eliminar filas alternas, bien sean las pares o bien las impares, se puede utilizar esta macro.
Sub EliminaFilas() 'Elimina filas alternas (pares o impares) For i = 5 To 3000 Cells(i, "A").EntireRow.Delete Next i End SubEl contador i va de uno en uno ya que al eliminar una fila la que se encontraba en la siguiente posición alterna, ahora es ha convertido en contígua. Cells(fila, columna). En este caso ponemos la columna A, en lugar de con el número 1, que es lo habitual, lo hacemos con la expresión "A". Comenzamos en i=5, esto hace que se eliminen las filas impares que comienzan en la fila 5. Si hubiéramos puesto i=6 entonces se comenzaría en la fila 6 y se eliminarían las filas pares. Si quieres hacer una prueba puedes obtener las cotizaciones de algún valor del Ibex desde la página de Invertia. Verás que al pasarlo a Excel te quedan filas en blanco interpuestas entre las filas que contienen las cotizaciones. Puedes probar la macro para eliminar las filas en blanco. Para ello elige un valor de Ibex y en 'Cotizaciones históricas' podras ver una tabla con los datos de las cotizaciones. Esta tabla la puedes seleccionar con el ratón, copiay y pegar en Excel. Otro inconveniente es que vienen muchos objetos incrustados que puedes eliminar con F5 (ir a), Especial, Objetos y luego pulsa la tecla Suprimir, de esta forma eliminaras todos estos molestos objetos.
Hola, quise realizar una prueba y al ejecutarla me indica un error de compilación: No se ha definido Sub o Function, qué hago?
ResponderEliminarHola Antonio.
ResponderEliminarUna macro comienza por 'Sub' y finaliza con 'End Sub', encontrándose entre ambas sentencias las líneas de programa.
Comprueba que la macro cumple esos requisitos. Si olvidamos poner alguna de esos comandos, o ponemos alguno de más, surge el error que comentas.
Un saludo.
Adolfo Aparicio
Hola Adolfo, muchas gracias, por error borre el end, ya quedo perfecta.
ResponderEliminarGracias desde Ciudad de México.
Hola.
ResponderEliminarSi quieres eliminar filas que se encuentran de forma periódica en un texto largo, puedes probar esta macro:
Sub EliminaFilas()
'Elimina filas una de cada cuatro 'comenzando en la fila 5
For i = 5 To 3000
Cells(i+3,"A").EntireRow.Delete
Next i
End Sub
Comienza eliminando la fila 5 ya que hemos escrito 'i=5'
Elimina una fila cada cuatro filas, ya que hemos puesto 'i+3'.
Pruebalo modifica estas dos variables para que se ajuste a tus necesidades.
Un saludo.
Adolfo Aparicio
Estimado:
ResponderEliminarTe escribo para solicitarte ayuda con lo sgte.
tengo un archivo como este a continuación
2.4 m 2.7 m 3.0 m 3.3 m 3.6 m 3.9 m Totals
APE 38_120 0 0 0 0 0 3 3
0 0 0 0 0 0.06 0.06
APE 38_135 0 0 0 0 1 66 67
0 0 0 0 0.02 1.35 1.36
APP 38_120 0 0 0 0 1 5 6
0 0 0 0 0.02 0.09 0.11
APP 38_135 0 0 0 0 0 6 6
0 0 0 0 0 0.12 0.12
COR 44 0 0 0 0 0 1 1
0 0 0 0 0 0.03 0.03
M&B 38_165 0 0 0 0 1 3 4
0 0 0 0 0.02 0.07 0.1
M&B 38_185 0 0 0 0 0 5 5
0 0 0 0 0 0.14 0.14
M&B 38_192 0 0 0 0 0 2 2
0 0 0 0 0 0.06 0.06
M&B 38_212 0 0 0 0 0 2 2
0 0 0 0 0 0.06 0.06
M&B 38_225 0 0 0 0 0 1 1
0 0 0 0 0 0.03 0.03
M&B 38_305 0 0 0 0 0 1 1
0 0 0 0 0 0.05 0.05
M&B 44_152 0 0 0 0 0 2 2
0 0 0 0 0 0.05 0.05
es una tabla con una primera fila que comienza en C1 con encabezados de largo (2,4 mts; 3,00 mts;etc.-), en la sgte fila (A2) están los datos que deseo mantener, y en la fila sgte 3;5;7;9;etc.- están los datos que no me sirven.
Al probar tu código...lamentablemente manda un mensaje de depuración que me lleva al editor de visual pero ha agregado más líneas al original.
No sé cómo hacerlo y es bastante el volúmen de archivos que debo manejar de la misma manera, y entenderás que a mano es engorroso lento y cansador.
Espero me puedas ayudar con esto, uso el office 2007 por si sirve el dato.
Me puedes contactar en robertolatorre@gmail.com.
Desde ya muchas gracias.
Antonio, buenas tardes ten go un problema corrí la macro pero me sale un mensaje que dice, Se ha producido el error 28 en tiempo de ejecución.
ResponderEliminarEspacio de pila insifuciente.
Gracias de antemano, saludos desde Brasil
Hola Marco Aurelio.
ResponderEliminarEl error que comentas se da habitualmente cuando se ejecuta un bucle y se produce algún problema de recursividad, por ejemplo, cuando no se consigue terminar el bucle. Otro motivo puede ser que se está ejecutando el bucle con muchos ciclos en un PC con poca memoria RAM.
Prueba a ejecutar la macro con el FOR NEXT de 5 hasta 500, por ejemplo, y si puedes, ejecútalo en otro PC con mayor RAM.
Puedes mirar este Post, para tomar ideas de macros que eliminan filas y columnas:
Eliminar Filas y Columnas vacias
Hola, tengo los siguientes subtítulos que quiero editar. Pongo un pequeño extracto:
ResponderEliminar1
00:00:55,055 --> 00:00:56,056
[somber opera music]
2
00:00:56,056 --> 00:00:57,057
[somber opera music]
3
00:00:56,056 --> 00:01:04,064
♪ ♪
4
00:01:19,579 --> 00:01:21,080
>> BEFORE THE GAME,
5
00:01:21,081 --> 00:01:22,582
>> BEFORE THE GAME,
6
00:01:21,081 --> 00:01:24,084
FOR SPORTSMANSHIP, I GO OUT TO
7
00:01:24,084 --> 00:01:27,087
FOR SPORTSMANSHIP, I GO OUT TO
8
00:01:24,084 --> 00:01:25,585
SHAKE JOHN STARKS' HAND,
9
00:01:25,585 --> 00:01:27,086
SHAKE JOHN STARKS' HAND,
La cuestión es que la mayor parte de las líneas se repite en el tiempo dos veces y quisiera eliminarlas, porque retrasan la salida de la siguiente. Obviamente no me vale el borrado alternativo, porque no todas se repiten y ésto haría que se eliminaran algunas imprescindibles. ¿Hay forma de hacer que se borren el grupo de 3 líneas cuya última linea sea igual a la última del anterior (o siguiente) grupo de 3 líneas?
Espero que me podáis ayudar, si me habéis entendido...
Gracias.
Hola buenas, ¿cómo podría eliminar filas en las que en una de sus celdas hubiese una "x"?
ResponderEliminarMuchas gracias de antemano
Saludos.
4as yo tengo el mismo problema queria borrar 2 seguidas y una no, lo resolvi con el siguiente macro
ResponderEliminarSub Macro1()
' Macro1 Macro
For i = 1 To 30
Cells(i + 1, "A").EntireRow.Delete
i = i + 1
Next
For i = 2 To 30
Cells(i, "A").EntireRow.Delete
Next
End Sub
Ahi si quieres muevele para ver si te sirve
Diego, tu macro me sirvio mucho.
ResponderEliminaragradecido
Esto les puede servir.
ResponderEliminarOtra manera de eliminar una, dos, tres o más filas y una no, o dos no, etc, es la siguiente.
Insertar una columna "auxiliar", dentro de esta columna deberán darle un valor x a la o las filas que desean eliminar y dejar vacías las filas que no desean eliminar; si desean eliminar las filas siguiendo un parámetro, pueden seleccionar (la o las celdas vacías y la o las celdas marcadas) y arrastrar de tal modo que se tenga marcadas todas las filas que se desean eliminar. Ahora deben seleccionar toda la columna "auxiliar" presionar F5, Especial, Constantes, ACEPTAR (Con esto tendrán seleccionadas solo las celdas de las filas que desean eliminar). Click derecho en una de estas celdas seleccionadas, click en eliminar, click en "toda la fila" y ACEPTAR.
Este método, sin desmerecer las macros que podamos crear, es mucho más sencillo y el proceso de eliminación es inmediato, sin importar la cantidad de filas que queramos eliminar; lo que, dependiendo de la velocidad de sus procesadores, con una macro, puede demorar algunos fastidiosos segundos.
Hola Juan Carlos.
EliminarFantástico!!! Me ha gustado mucho el método.
Tienes toda la razón al decir que si algo se puede solucionar sin macro y de forma sencilla siempre será mucho mejor que usar macros.
Lo he probado y esta muy bien. El único inconveniente es que las X las tienes que poner a mano, ya que si lo haces con una fórmula SI dejando como opción en caso verdadero que ponga una X y en caso falso que ponga "". Al pulsar luego F5 y elegir Constantes lo que hace es señalar todo, ya que el valor "" lo no toma exactamente igual que una celda vacía. Tampoco es un gran inconveniente ya que luego puedes ordenar esa columna auxiliar y eliminar todas las filas que tengan X.
Buen aporte!!!
Hola Juan Carlos.
ResponderEliminarSi ponemos en la columna auxiliar una fórmula condicional SI que nos ponga las X en las celdas cuya fila deseamos eliminar y nos ponga "" en las celdas restantes, hemos visto que al seleccionar esa columna auxiliar y pulsar F5 si ponemos Constante el truco no funciona puesto que selecciona todas las celdas.
Lo que tenemos que hacer es poner las X con la función SI y luego copiar y pegar esa columna auxiliar sobre si misma con pegado especial valores. Luego se selecciona la columna auxiliar entera y se pulsa F5. Se elige "Especial..." y "Diferencia entre columnas". Ahora ya tendremos seleccionadas únicamente las celdas que contienen la X. Finalmente pulsamos sobre el botón derecho de ratón y elegimos "Eliminar" y "Toda la fila".
Gracias por el aporte. Me ha gustado mucho.
Ando en buscar de dos macros..
ResponderEliminar1. Macro para eliminar al ultima fila que contenga valores en una tabla
2. Macro para eliminar todas las filas que contengan un valor indicado en una celda X, ej: en Hoja1, A1, contiene el valor 55, al ejecutar la macro, esta ubica el valor en la columna C de la Hoja 2 y elimina la fila, si el mismo valor esta en tres filas distintas, se eliminan las 3 filas que lo contengan...
tengo una duda... si deseo eliminar una fila con la condición de que una cela tenga si, la celda tiene un no la fila no se eliminara... con que condicional puedo comparar la celda sin que tenga una posición precisa sino que cambie según el ciclo for?
ResponderEliminartengo una duda... si deseo eliminar una fila con la condición de que una cela tenga si, la celda tiene un no la fila no se eliminara... con que condicional puedo comparar la celda sin que tenga una posición precisa sino que cambie según el ciclo for?
ResponderEliminarHola Adolfo!
ResponderEliminarTengo una duda y no consigo solventarla. Tengo una tabla en la que cada celda tiene una lista de datos. Alguna celda tiene un dato y otras tienen varios. He hecho una macro para que cuando yo selecciono un nombre de otra lista desplegable, me busque en cada fila de esa tabla el nombre que yo quiero. El problema está que cuando tengo varios datos en una celda, sólo me lee el primero. Si quieres te puedo pasar el archivo para que le eches un vistazo. Estoy empezando en este mundo y me queda aún mucho por aprender! Muchas gracias de antemano!
buenos dias tengo esta macro que me elimina filas segun el contenido de una celda, hasta ahi bien, pero como mis filas van en pareja quiero que ademas de la fila con una celda que contenga la palabra INSTITUTO, borre tambien la inmediata siguiente, es decir si la macro borra la fila 30,38 y 44 pues que tambien borre las filas 31,.39 y 45, pero no tengo ni idea de como hacerlo;
ResponderEliminardejo la macro que uso aver si alguien me ayuda y muchas gracias.
Sub Elimina_clase()
Sheets("Intercambio").Select
Dim a As New Collection
Sheets("Intercambio").Select
For b = 1 To Range("A" & Rows.Count).End(xlUp).Row
If UCase(Cells(b, "E")) = "INSTITUTO" Then
a.Add b
End If
Next
For b = a.Count To 1 Step -1
Rows(a(b)).Delete
Next
End Sub
Hola, interesante la macro pero si puedes ayudarme por favor... tengo texto y numeros en la columna A y quiero eliminar solo las filas que contengan texto, están mezclados entre todos los datos. Hay alguna forma de hacerlo? el texto puede decir cualquier cosa. Muchas gracias
ResponderEliminarhay algun patron que se repita en tus celdas? es decir las mismas letras o palabras? puedes enviar un archivoexcel para verlo?
EliminarHola Maestro, y como sería la macro para eliminar la fila a partir de la Columna "B" y bajo la condición de que la columna "D" esta vacía
ResponderEliminarHOLA PODRÍAS AYUDARME, TENGO UNA BASE DE DATOS EN EL CUAL QUIERO ELIMINAR TODAS LAS FILAS QUE CONTENGAN LA PLABARA ELIMINAR.
ResponderEliminarHola.
EliminarSupongamos que tienes una tabla en Excel donde la columna A contiene en algunos registros (filas) la palabra "eliminar". Una forma de eliminar las filas donde está esta palabra consiste en ordenar la tabla por la columna A, de esta forma quedarán juntas todas las filas que se quieren eliminar. Luego lo que hacemos es eliminarlas y así ya lo hemos conseguido. Finalmente se vuleve a ordenar si que quiere por el mismo criterio por el que estaba ordenada la tabla inicialmenente.
El procedimiento descrito es manual, si esto se va ha realizar muchas veces sería necesario programar una macro.
Un saludo.
Hola, como puedo eliminar Todos los datos de una hoja en particular.???
ResponderEliminarPero con alguna macro. Gracias
Eliminar