Ayuda con macro para eliminar celdas

27/02/2008 - 20:22 por Citronio | Informe spam
Buenas tardes.
Estoy intentando crear una macro que elimine las celdas vacías de un rango,
desplazando hacia la izquierda las que tengan datos.
Ejemplo. Supongamos que queremos agrupar todos los cuadros negros de un
tablero de ajedrez (8x8 celdas), en la izquierda del tablero, eliminando los
blancos, y de forma que nos quedaría un tablero de 8 filas y sólo 4
columnas.
Creo que me he explicado bien.
El problema es que el rango no es de 8x8 sino bastante más grande 4500 x 36
aproximadamente
Lo he intentado pero me hago un lío con los rangos y los desplazamientos.
Muchas gracias y un saludo


Por cierto, he estado leyendo los mensajes del último mes y no he encontrado
nada que me sirviera para esto, pero sí para otras macros.
Buen trabajo de los "profes", si señor.

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
28/02/2008 - 00:13 | Informe spam
hola, (...) ???

Mostrar la cita
el siguiente ejemplo lo puedes ejecutar desde la ventana de inmediato (atajo: ctfl+G) en el editor de vba y pulsas {enter}
-> solo corrige el rango de las 4500 x 36 (yo probe con un rango "ligeramemte" mas corto: 10 x 6) :))

[a1:f10].specialcells(xlcelltypeblanks).delete shift:=xltoleft

saludos,
hector.
#2 Citronio
28/02/2008 - 01:10 | Informe spam
"Héctor Miguel" escribió en el mensaje de
noticias news:e$
Mostrar la cita
Muchas gracias por tu respuesta
Funciona perfectamente siempre y cuando la celda esté completamente vacía,
pero el caso es que las celdas a eliminar son un pega-valor de otras celdas
que contenían "" (una cadena vacía) y al buscarlas, tu algoritmo no las
encuentra porque lo que busca son celdas vacías.
Eso sí, si hago F2 y enter en cualquiera de ellas, la encuentra y la elimina
sin problemas. (No escribo ni borro nada en la celda, sólo hago F2 y pulso
enter)
Pero claro, eso no me sirve, porque hacerlo con todas las que tengo, es peor
que hacerlo a mano.
Pues eso, muchas gracias, y si se te ocurre algo más, seguiré leyendo.

Un saludo




Mostrar la cita
#3 Héctor Miguel
28/02/2008 - 04:12 | Informe spam
hola, (...) ?

Mostrar la cita
(hasta donde se)... eso que comentas pasa (regularmente) cuando se dejan "ciertos detalles en el tintero" :))
inicialmente solicitabas eliminar celdas (expresamente) "vacias" (que no es lo mismo que "con cadenas vacias")
para el caso que (ahora) expones, intenta con una instruccion previa y luego la misma de la propuesta anterior...
(solo "ajusta" el rango a tu caso real)

(primero)
[a1:f20] = evaluate("transpose(transpose(a1:f20))")

(despues)
[a1:f20].specialcells(xlcelltypeblanks).delete shift:=xltoleft

si cualquier duda (o surge informacion adicional)... comentas ?
saludos,
hector.

__ las consultas anteriores __
Mostrar la cita
#4 Citronio
02/03/2008 - 10:29 | Informe spam
Muchas gracias Héctor, me has sido de gran ayuda


Un saludo



"Héctor Miguel" escribió en el mensaje de
noticias news:
Mostrar la cita
Ads by Google
Search Busqueda sugerida