insertar renglones de acuerdo con condicion

15/12/2003 - 17:32 por Raul Rodriguez | Informe spam
Saludos desde Mexico,

Tengo un archivo de datos muy grande pero sin separaciones
entre los datos, cada dato puede tener 3 o 4 renglones de
informacion, por lo que necesito insertar un renglon en
blanco antes de cada nuevo dato. Cuando empieza otro nuevo
dato el renglon tiene la palabra "true" incluida, por lo
que esta palabra puede ser usada como condicion.

Alguien me podria ayudar con algun tip o codigo para
solucionar esto por favor?.

Gracias de antemano y saludos.

Raul Rodriguez.

Preguntas similare

Leer las respuestas

#1 Fernando Arroyo
15/12/2003 - 19:33 | Informe spam
No dices en qué columna están los datos, o si son varias...
Suponiendo que estuvieran en la columna A, el siguiente código debería servirte:

Sub InsertarReglones()
Dim lngFila As Long
lngFila = 2 'Se supone que la primera fila tiene la palabra TRUE

Application.ScreenUpdating = False
With Worksheets("Hoja1") 'Hoja que se procesará
While Not IsEmpty(.Cells(lngFila, 1))
If Not IsError(Application.Search("TRUE", .Cells(lngFila, 1))) Then
.Cells(lngFila, 1).EntireRow.Insert
lngFila = lngFila + 2
Else
lngFila = lngFila + 1
End If
Wend
End With
Application.ScreenUpdating = True
End Sub


Un saludo.


Fernando Arroyo
MS MVP - Excel

"Raul Rodriguez" escribió en el mensaje news:143a801c3c329$17ba8100$
Saludos desde Mexico,

Tengo un archivo de datos muy grande pero sin separaciones
entre los datos, cada dato puede tener 3 o 4 renglones de
informacion, por lo que necesito insertar un renglon en
blanco antes de cada nuevo dato. Cuando empieza otro nuevo
dato el renglon tiene la palabra "true" incluida, por lo
que esta palabra puede ser usada como condicion.

Alguien me podria ayudar con algun tip o codigo para
solucionar esto por favor?.

Gracias de antemano y saludos.

Raul Rodriguez.


Respuesta Responder a este mensaje
#2 Raul Rodriguez
15/12/2003 - 20:20 | Informe spam
Fernando,

Gracias por tu apoyo de nuevo, trabajas para MS?, bueno
eso no es importante, gracias por compartir tus
conocimientos.

Los datos estan en la columna 1 y son como lo que sigue:

NAME = ""_AppsCollect"", PARAM_TYPE = COLLECTOR ...
NAME = ""APPServerStatus"", PARAM_TYPE = CONSUMER ...
NAME = ""BORDER"", ...
NAME = ""LogIncreaseRate"", PARAM_TYPE = STANDARD ...

y mi condicion es la palabra "PARAM_TYPE" que es parte de
todo lo que existe en la columna 1.

Encontre el siguiente codigo, crees que tambien
funcionaria?


' insert a row after each row which contains "Total" in
column 1
Dim rCell As Range
For Each rCell In ActiveSheet.UsedRange.Columns(1).Cells
If rCell.Value = "Total" Then rCell.Offset
(1).EntireRow.Insert
Next rCell

Gracias.

No dices en qué columna están los datos, o si son


varias...
Suponiendo que estuvieran en la columna A, el siguiente


código debería servirte:

Sub InsertarReglones()
Dim lngFila As Long
lngFila = 2 'Se supone que la primera fila tiene la


palabra TRUE

Application.ScreenUpdating = False
With Worksheets("Hoja1") 'Hoja que se procesará
While Not IsEmpty(.Cells(lngFila, 1))
If Not IsError(Application.Search


("TRUE", .Cells(lngFila, 1))) Then
.Cells(lngFila, 1).EntireRow.Insert
lngFila = lngFila + 2
Else
lngFila = lngFila + 1
End If
Wend
End With
Application.ScreenUpdating = True
End Sub


Un saludo.


Fernando Arroyo
MS MVP - Excel

"Raul Rodriguez"


escribió en el mensaje news:143a801c3c329$17ba8100
$
Saludos desde Mexico,

Tengo un archivo de datos muy grande pero sin




separaciones
entre los datos, cada dato puede tener 3 o 4 renglones




de
informacion, por lo que necesito insertar un renglon en
blanco antes de cada nuevo dato. Cuando empieza otro




nuevo
dato el renglon tiene la palabra "true" incluida, por




lo
que esta palabra puede ser usada como condicion.

Alguien me podria ayudar con algun tip o codigo para
solucionar esto por favor?.

Gracias de antemano y saludos.

Raul Rodriguez.




.

Respuesta Responder a este mensaje
#3 Fernando Arroyo
16/12/2003 - 10:56 | Informe spam
El código modificado podría ser:

Sub InsertarReglones()
Dim lngFila As Long
lngFila = 2 'Se supone que la primera fila tiene la palabra TRUE

Application.ScreenUpdating = False
With Worksheets("Hoja1") 'Hoja que se procesará
While Not IsEmpty(.Cells(lngFila, 1))
If Not IsError(Application.Search("PARAM_TYPE", .Cells(lngFila, 1))) Then
.Cells(lngFila, 1).EntireRow.Insert
lngFila = lngFila + 2
Else
lngFila = lngFila + 1
End If
Wend
End With
Application.ScreenUpdating = True
End Sub


Respecto al código que pones en tu mensaje, en este caso no funcionará porque para que inserte la fila la celda debe tener como valor "Total". Aunque sustituyeras "Total" por "PARAM_TYPE", seguiría sin funcionar porque la celda puede tener dicho término en cualquier sitio. Podría funcionar si sustituyeras la línea

If rCell.Value = "Total" Then rCell.Offset(1).EntireRow.Insert

por

If Not IsError(Application.Search("PARAM_TYPE", rCell, 1))) Then rCell.Offset(1).EntireRow.Insert

pero ten en cuenta que el bucle trabaja con la propiedad UsedRange, lo que significa que si hubiera otros datos en la hoja el código podría fallar, y también que conviene desactivar la actualización de pantalla para que el código vaya más rápido si se ejecuta desde la hoja.
Un saludo.


Fernando Arroyo
MS MVP - Excel


"Raul Rodriguez" escribió en el mensaje news:145a301c3c340$8ba908e0$
Fernando,

Gracias por tu apoyo de nuevo, trabajas para MS?, bueno
eso no es importante, gracias por compartir tus
conocimientos.

Los datos estan en la columna 1 y son como lo que sigue:

NAME = ""_AppsCollect"", PARAM_TYPE = COLLECTOR ...
NAME = ""APPServerStatus"", PARAM_TYPE = CONSUMER ...
NAME = ""BORDER"", ...
NAME = ""LogIncreaseRate"", PARAM_TYPE = STANDARD ...

y mi condicion es la palabra "PARAM_TYPE" que es parte de
todo lo que existe en la columna 1.

Encontre el siguiente codigo, crees que tambien
funcionaria?


' insert a row after each row which contains "Total" in
column 1
Dim rCell As Range
For Each rCell In ActiveSheet.UsedRange.Columns(1).Cells
If rCell.Value = "Total" Then rCell.Offset
(1).EntireRow.Insert
Next rCell

Gracias.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida