Jump to content

Insertar Columnas


Recommended Posts

Buenas Tardes a toda la comunidad de AyudaExcel

quisiera saber si me podrian ayudar con un problema que tengo

recien estoy comenzando a ver el Excel y me estan pidiendo un macro para agregar Columnas despues de un tipo de contenido en una celda

por ejemplo

[TABLE=class: grid, width: 500]

[TR]

[TD]PEPE[/TD]

[TD]TOTAL[/TD]

[TD]MARIA[/TD]

[TD]TOTAL[/TD]

[TD]WENDy[/TD]

[TD]TOTAL[/TD]

[/TR]

[/TABLE]

entonces lo que me piden es que con la macro busque

todas las celdas que tienen el valor "TOTAL" y agregue 2 columnas en blanco despues

para que quede asi

[TABLE=class: outer_border, width: 500]

[TR]

[TD]PEPE[/TD]

[TD]TOTAL[/TD]

[TD](vacio)[/TD]

[TD](vacio)[/TD]

[TD]MARIA[/TD]

[TD]TOTAL[/TD]

[TD](vacio)[/TD]

[TD](vacio)[/TD]

[TD]WENDY[/TD]

[TD]TOTAL[/TD]

[TD](vacio)[/TD]

[TD](vacio)[/TD]

[/TR]

[/TABLE]

pongo esto como ejemplo pero son mas de 300 nombres y estar haciendo 1 por uno

de manera manual me toma horas

espero me puedan ayudar

gracias =)

Link to comment
Share on other sites

Guest Cacho R

Re: Ayuda Con Macro para Insertar Columnas

Hola! takeo.

a) Incorpora la siguiente macro:

Sub InsertEspacios()
Rem -------------------
Rem By Cacho Rodríguez
Rem -------------------
Dim Mat1, Mat2, Q As Long, i As Long

Mat1 = Range(Selection, Selection.End(xlToRight))
Q = WorksheetFunction.Floor(UBound(Mat1, 2), 2)
ReDim Mat2(1 To 1, 1 To 2 * Q)

For i = 1 To Q Step 2
Mat2(1, 2 * i - 1) = Mat1(1, i)
Mat2(1, 2 * i) = Mat1(1, i + 1)
Next i

Selection.Offset(5).Resize(, 2 * Q) = Mat2
Mat1 = Empty: Mat2 = Empty
End Sub[/PHP]

B) Selecciona la primera celda de la izquierda (la que contiene PEPE en tu ejemplo) y ejecuta la macro incorporada.

¿Te puede ser de utilidad?...

Saludos, Cacho R

Link to comment
Share on other sites

Re: Ayuda Con Macro para Insertar Columnas

Hola takeo

entonces lo que me piden es que con la macro busque

todas las celdas que tienen el valor "TOTAL" y agregue 2 columnas en blanco despues

Un metodo mas (Cacho solo por acompanar-te)

Sub espacios_derecha_GP()
Application.ScreenUpdating = False
ucol = Cells(1, Columns.Count).End(xlToLeft).Column
For Each cel In Range(Cells(1, 1), Cells(1, ucol))
If VBA.UCase(cel) = "TOTAL" And Cells(cel.Row, cel.Column).Offset(, 1) <> "" Then
Set rango = Range(Cells(cel.Row, cel.Column).Offset(, 1), _
Cells(cel.Row, cel.Column).Offset(, 1).End(xlToRight))
With rango
.Activate
.Cut Destination:=ActiveCell.Offset(, 2)
End With
End If
ucol = Cells(1, Columns.Count).End(xlToLeft).Column
Next
Range("A1").Select
Set rango = Nothing
Application.ScreenUpdating = True
End Sub[/PHP]

Saludos a ambos

Link to comment
Share on other sites

Guest Cacho R

Re: Ayuda Con Macro para Insertar Columnas

¿Y, takeo?... ¿Analizaste las propuestas?...

P.D.

Un saludo para el "troesma" Gerson

Link to comment
Share on other sites

Guest Cacho R

Re: Ayuda Con Macro para Insertar Columnas

Entonces debes estar haciendo mal una de las dos siguientes cosas:

a) En el código que te he mostrado tienes que seleccionar la celda extrema izquierda de tu tabla de datos (la celda que contiene el primer Pepe) antes de ejecutar la macro;

B) En el código que te ha mostrado Gerson tienes que tener tus datos en la fila 1, a partir de la celda A1.

Te diría que pruebes de nuevo y comentes...

Link to comment
Share on other sites

Re: Ayuda Con Macro para Insertar Columnas

:o tienes razon ahora si funciono pero.. no me agrega 2 columna me agrega 2 celdas al lado , por que el contenido que se encuenta debajo de cada celda se mantiene ahi , mientras que las celdas de la fila A se desplazan >_< !!

Link to comment
Share on other sites

Re: Ayuda Con Macro para Insertar Columnas

[TABLE=width: 500]

[TR]

[TD]PEPE[/TD]

[TD]TOTAL[/TD]

[TD]LAURA[/TD]

[TD]TOTAL[/TD]

[TD][/TD]

[/TR]

[TR]

[TD]asd2[/TD]

[TD]2[/TD]

[TD]tytyt[/TD]

[TD]4[/TD]

[TD][/TD]

[/TR]

[TR]

[TD]zxcxz[/TD]

[TD]3[/TD]

[TD]yuyuy[/TD]

[TD]5[/TD]

[TD][/TD]

[/TR]

[/TABLE]

y despues de usar el macro queda

[TABLE=width: 500]

[TR]

[TD]PEPE[/TD]

[TD]TOTAL[/TD]

[TD][/TD]

[TD][/TD]

[TD]LAURA[/TD]

[TD]TOTAL[/TD]

[TD][/TD]

[TD][/TD]

[/TR]

[TR]

[TD]asd2[/TD]

[TD]2[/TD]

[TD]tytyt[/TD]

[TD]4[/TD]

[TD][/TD]

[TD][/TD]

[TD][/TD]

[TD][/TD]

[/TR]

[TR]

[TD]zxcxz[/TD]

[TD]3[/TD]

[TD]yuyuy[/TD]

[TD]5[/TD]

[TD][/TD]

[TD][/TD]

[TD][/TD]

[TD][/TD]

[/TR]

[/TABLE]

y lo que Anhelo T_T de todo corazon es que quede

[TABLE=width: 500]

[TR]

[TD]PEPE[/TD]

[TD]TOTAL[/TD]

[TD]vacio[/TD]

[TD]vacio[/TD]

[TD]LAURA[/TD]

[TD]TOTAL[/TD]

[TD]vacio[/TD]

[TD]vacio[/TD]

[/TR]

[TR]

[TD]asd2[/TD]

[TD]2[/TD]

[TD]vacio[/TD]

[TD]vacio[/TD]

[TD]tytyt[/TD]

[TD]4[/TD]

[TD]vacio[/TD]

[TD]vacio[/TD]

[/TR]

[TR]

[TD]zxcxz[/TD]

[TD]3[/TD]

[TD]vacio[/TD]

[TD]vacio[/TD]

[TD]yuyuy[/TD]

[TD]5[/TD]

[TD]vacio[/TD]

[TD]vacio[/TD]

[/TR]

[/TABLE]

=)

pero de todas maneras muchas gracias

si por ahi les sale les estare agradecido eternamente..

mientras ire probando .. !!

Link to comment
Share on other sites

Re: Ayuda Con Macro para Insertar Columnas

Hola Jorge

Creo que nos confundimos por lo de "vacio" y me deje llevar tambien por el aporte del troesma Cacho, aunque el titulo del tema es mas que claro...

Adapta esta nueva propuesta

Sub insertar_columnas_GP()
Application.ScreenUpdating = False
ucol = Cells(1, Columns.Count).End(xlToLeft).Column
For Each cel In Range(Cells(1, 1), Cells(1, ucol))
If VBA.UCase(cel) = "TOTAL" And _
Cells(cel.Row, cel.Column).Offset(, 1) <> "" Then
Set cols = Range(Cells(cel.Row, cel.Column).Offset(, 1), _
Cells(cel.Row, cel.Column).Offset(, 2))
cols.EntireColumn.Insert xlShiftToRight
ucol = Cells(1, Columns.Count).End(xlToLeft).Column
End If
Next
Range("A1").Select
Set cols = Nothing
Application.ScreenUpdating = True
End Sub
[/PHP]

Espero te funcione

Pd a espera de la propuesta del señor Rodriguez

Saludos

Link to comment
Share on other sites

Guest Cacho R

Re: Ayuda Con Macro para Insertar Columnas

Tiendo a no coincidir contigo, Gerson.

Es decir: entiendo que eres excesivamente condescendiente con el consultante (jajajajaja).

En realidad hemos llegado al mensaje #10 (hasta aquí) por no haberle recordado a Jorge -desde un inicio- que no está cumpliendo con las estrictas normas de este Foro, en el sentido de publicar un archivo de muestra: ¿O no?...

De hecho: acepto tu "convite" de rehacer mi versión anterior -tan sólo- por tu requerimiento, ya que no pensaba hacerlo debido a lo mal preguntado y al innecesario tiempo que nos ha hecho aplicar a este tema.

¡En fin!...

Yendo a lo específico, entiendo que la ausencia del archivo de muestra impide evaluar -a ciencia cierta- detalles importantes como: la cantidad de filas de datos o si la primera columna de datos (la encabezada por PEPE) se encuentra totalmente ocupada (hasta la fila que sea) sin interespacios.

Y lo anterior no es un detalle menor: si son pocas filas diría que trabajar en memoria es lo más eficiente. De no serlo, ya no me animaría a brindar esa afirmación.

Hechas estas salvedades: adjunto mi versión corregida.

Libro1.rar

Link to comment
Share on other sites

Re: Ayuda Con Macro para Insertar Columnas

Tiendo a no coincidir contigo, Gerson.

Es decir: entiendo que eres excesivamente condescendiente con el consultante (jajajajaja).

En realidad hemos llegado al mensaje #10 (hasta aquí) por no haberle recordado a Jorge -desde un inicio- que no está cumpliendo con las estrictas normas de este Foro, en el sentido de publicar un archivo de muestra: ¿O no?...

De hecho: acepto tu "convite" de rehacer mi versión anterior -tan sólo- por tu requerimiento, ya que no pensaba hacerlo debido a lo mal preguntado y al innecesario tiempo que nos ha hecho aplicar a este tema.

¡En fin!...

Yendo a lo específico, entiendo que la ausencia del archivo de muestra impide evaluar -a ciencia cierta- detalles importantes como: la cantidad de filas de datos o si la primera columna de datos (la encabezada por PEPE) se encuentra totalmente ocupada (hasta la fila que sea) sin interespacios.

Y lo anterior no es un detalle menor: si son pocas filas diría que trabajar en memoria es lo más eficiente. De no serlo, ya no me animaría a brindar esa afirmación.

Hechas estas salvedades: adjunto mi versión corregida.

Mi estimado Cacho! estamos en semana santa (jeje), en realidad tienes razon, pero luego no quiero que sigan pensando que soy el (unico) malo de la pelicula (que por cierto hoy, vi de nuevo "TROYA" la has visto? de largometraje pero buena...)

Pasando al tema, sigo admirando tu programacion, especialmente cuando trabajas con la memoria uff vaya que son mas que rapidas tus creaciones, cuando sea grande quiero ser como ("Aquiles" jaja son bromas) tu

Ahora solo a la espera que nuestro compañero, de sus comentarios finales y que tambien sigan las normas de aqui adelante

Saludos cordiales troesma!

Link to comment
Share on other sites

Guest Cacho R

Re: Ayuda Con Macro para Insertar Columnas

Aprovechando una "escapadita" durante la Semana Santa, aprovecho a confirmarte lo que sospechaba: con 500 o más filas tu código es más rápido, pero con menos es a la inversa.

Como es habitual: para determinar el método más eficiente SIEMPRE se requiere conocer "toda la película".

Hablando de películas...

Antes que ver a Pitt en Troya, prefiero ver a Angie en Salt (sorry).

Link to comment
Share on other sites

Re: Ayuda Con Macro para Insertar Columnas

Aprovechando una "escapadita" durante la Semana Santa, aprovecho a confirmarte lo que sospechaba: con 500 o más filas tu código es más rápido, pero con menos es a la inversa.

Como es habitual: para determinar el método más eficiente SIEMPRE se requiere conocer "toda la película".

Hablando de películas...

Antes que ver a Pitt en Troya, prefiero ver a Angie en Salt (sorry).

Eres jaja como pitt, salt es muy buena, como casi todas las de esta bella mujer... pero me gusta mas "Wanted"

Jorge Antonio

Que tal? ya podemos cerrar el tema?

Saludos

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

Privacy Policy