Depurar fichero

01/02/2004 - 11:02 por Manuel | Informe spam
Hola a todos

Necesito depurar un fichero, y quisiera poder hacer una
macro, que realicela siguiente tarea:

1.-Buscar en la columna "A", el caracter "--", y después
elimine las 10 filas completas superiores, hasta el final
del fichero.

2.-Buscar en cada fila, y cada vez que encuentre una fila
vacia, copie los datos de la fila superior no vacia, pero
tan solo los datos existentes de las columnas "A"a la "D".

Gracias por vuestra colaboración

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
04/02/2004 - 08:01 | Informe spam
hola, Manuel !

Necesito depurar un fichero, y quisiera poder hacer una macro, que realice la siguiente tarea:
1.-Buscar en la columna "A", el caracter "--", y ... elimine las 10 filas completas superiores, hasta el final del fichero.
2.-... cada vez que encuentre una fila vacia, copie los datos de la fila superior no vacia ... de las columnas "A"a la "D".



no estoy [muy] seguro de haber captado 'exactamente' tu solicitud :((
[de cualquier forma]... la siguiente 'propuesta' es [o pudiera ser] un 'buen comienzo' :))
'entendiendo' por =>las 10 filas superiores<= 'incluida' la que 'contiene' el caracter "--" [o sea... 11 filas 'eliminables']

si cualquier duda... ¿comentas?
saludos,
hector.
___ en un modulo de codigo 'normal' ___
Sub Borrar10_y_Copiar()
Dim Fila As Long
With ActiveSheet
For Fila = .Range("a65536").End(xlUp).Row To 11 Step -1
With .Range("a" & Fila)
If InStr(.Value, "--") > 0 Then
Range(.Offset(-10), .Offset(0)).EntireRow.Delete
Fila = Fila - 10
End If
End With
Next
For Fila = 12 To .Range("a65536").End(xlUp).Row
With .Range("a" & Fila)
If Application.CountBlank(.EntireRow) = 256 Then
Range(.End(xlUp), .End(xlUp).Offset(, 3)).Copy .Offset(0)
End If
End With
Next
End With
End Sub
Respuesta Responder a este mensaje
#2 Manuel
04/02/2004 - 23:36 | Informe spam
Héctor muchas gracias
La primera parte de la macro resuelve perfectamente mi
primera pregunta.
La 2ª pregunta que corresponde a una 2ª macro es la
siguiente
Supongamos un rango A1;X65536
Quisiera que la macro buscara en la columna A, y cada vez
que encuentre una celda vacia de esa columna(ejemplo
A14), copie el rango (ejemplo A13;C13), de la fila
inmediata superior que contenga datos.

Gracias por todo.


hola, Manuel !

Necesito depurar un fichero, y quisiera poder hacer




una macro, que realice la siguiente tarea:
1.-Buscar en la columna "A", el caracter "--", y ...




elimine las 10 filas completas superiores, hasta el final
del fichero.
2.-... cada vez que encuentre una fila vacia, copie




los datos de la fila superior no vacia ... de las
columnas "A"a la "D".

no estoy [muy] seguro de haber captado 'exactamente' tu


solicitud :((
[de cualquier forma]... la siguiente 'propuesta' es [o


pudiera ser] un 'buen comienzo' :))
'entendiendo' por =>las 10 filas superiores<= 'incluida'


la que 'contiene' el caracter "--" [o sea... 11
filas 'eliminables']

si cualquier duda... ¿comentas?
saludos,
hector.
___ en un modulo de codigo 'normal' ___
Sub Borrar10_y_Copiar()
Dim Fila As Long
With ActiveSheet
For Fila = .Range("a65536").End(xlUp).Row To 11


Step -1
With .Range("a" & Fila)
If InStr(.Value, "--") > 0 Then
Range(.Offset(-10), .Offset


(0)).EntireRow.Delete
Fila = Fila - 10
End If
End With
Next
For Fila = 12 To .Range("a65536").End(xlUp).Row
With .Range("a" & Fila)
If Application.CountBlank(.EntireRow) = 256 Then
Range(.End(xlUp), .End(xlUp).Offset(,


3)).Copy .Offset(0)
End If
End With
Next
End With
End Sub


.

Respuesta Responder a este mensaje
#3 LauMan MX \(Manolo\)
05/02/2004 - 01:07 | Informe spam
hola tocayo.

eso lo puedes hacer con una formula.por ejemplo:

inserta una nueva columna A
en la celda A1 le pones la formula ± para que empieces con un titulo
en la celda A2 le pones la formula =si(B2="",A1,B2) para que copie el valor
de B2 si tiene datos, o el valor de la celda anterior si no tiene datos
copias la formula en toda la columna
copias toda la columna y con pegado especial pegas valores
asi se eliminaron todos los espacios en blancopuede eliminar la columna
B


Saludos

Manolo
Cancun, México





"Manuel" escribió en el mensaje
news:a49a01c3eb6f$43689350$
Héctor muchas gracias
La primera parte de la macro resuelve perfectamente mi
primera pregunta.
La 2ª pregunta que corresponde a una 2ª macro es la
siguiente
Supongamos un rango A1;X65536
Quisiera que la macro buscara en la columna A, y cada vez
que encuentre una celda vacia de esa columna(ejemplo
A14), copie el rango (ejemplo A13;C13), de la fila
inmediata superior que contenga datos.

Gracias por todo.


hola, Manuel !

Necesito depurar un fichero, y quisiera poder hacer




una macro, que realice la siguiente tarea:
1.-Buscar en la columna "A", el caracter "--", y ...




elimine las 10 filas completas superiores, hasta el final
del fichero.
2.-... cada vez que encuentre una fila vacia, copie




los datos de la fila superior no vacia ... de las
columnas "A"a la "D".

no estoy [muy] seguro de haber captado 'exactamente' tu


solicitud :((
[de cualquier forma]... la siguiente 'propuesta' es [o


pudiera ser] un 'buen comienzo' :))
'entendiendo' por =>las 10 filas superiores<= 'incluida'


la que 'contiene' el caracter "--" [o sea... 11
filas 'eliminables']

si cualquier duda... ¿comentas?
saludos,
hector.
___ en un modulo de codigo 'normal' ___
Sub Borrar10_y_Copiar()
Dim Fila As Long
With ActiveSheet
For Fila = .Range("a65536").End(xlUp).Row To 11


Step -1
With .Range("a" & Fila)
If InStr(.Value, "--") > 0 Then
Range(.Offset(-10), .Offset


(0)).EntireRow.Delete
Fila = Fila - 10
End If
End With
Next
For Fila = 12 To .Range("a65536").End(xlUp).Row
With .Range("a" & Fila)
If Application.CountBlank(.EntireRow) = 256 Then
Range(.End(xlUp), .End(xlUp).Offset(,


3)).Copy .Offset(0)
End If
End With
Next
End With
End Sub


.

Respuesta Responder a este mensaje
#4 Héctor Miguel
05/02/2004 - 06:05 | Informe spam
hola, Manuel !

... la 2ª pregunta que corresponde a una 2ª macro es ... que la macro buscara en la columna A
... y cada vez que encuentre una celda vacia de esa columna (ejemplo A14)
... copie el rango (ejemplo A13;C13), de la fila inmediata superior que contenga datos.



la segunda pregunta, 'trate' de incluirla en la macro ['pero...'] de acuerdo con la consulta 'original'...
2.-... cada vez que encuentre una fila vacia, copie los datos de la fila superior no vacia ... de las columnas "A"a la "D".<<




[es decir] solicitabas que:
- la condicion fuera que TODA la fila estuviera 'vacia' =>'ahora' es 'solo' la celda< => por eso 'revisaba' [en el 2° bucle] que 'en toda' la fila existiera [al menos] un caracter 'imprimible' con la instruccion:
If Application.CountBlank(.EntireRow) = 256 Then :((
- y que se copiara [de la fila 'superior NO vacia'] las columnas 'A' a 'D' =>'ahora' son 'solo' las columnas 'A' a 'C'<
=> modifica el 2° bucle a lo siguiente: [solo 'asegurate' de que la fila 'inicial' NO ES una celda 'vacia']
_____ [...] _____
For Fila = 12 To .Range("a65536").End(xlUp).Row
With .Range("a" & Fila)
If Len(.Value) = 0 Then
' de las siguientes tres lineas, 'usa' la que consideres mas 'clara' ;) '
' Range(.Offset(-1), .Offset(-1).Offset(, 2)).Copy .Offset(0)
' Range(Range("a" & Fila - 1), Range("c" & Fila - 1)).Copy .Offset(0)
' .Range("a" & Fila - 1 & ":c" & Fila - 1).Copy .Offset(0)
End If
End With
Next
¨¨¨¨¨¨¨¨¨¨[...]¨¨¨¨¨¨¨¨¨¨

¿comentas?
saludos,
hector.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida