Saltar al contenido

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 =)

Enlace a comentario
Compartir con otras webs

Invitado 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

Enlace a comentario
Compartir con otras webs

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

Enlace a comentario
Compartir con otras webs

Invitado Cacho R

Re: Ayuda Con Macro para Insertar Columnas

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

P.D.

Un saludo para el "troesma" Gerson

Enlace a comentario
Compartir con otras webs

Invitado 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...

Enlace a comentario
Compartir con otras webs

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 >_< !!

Enlace a comentario
Compartir con otras webs

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 .. !!

Enlace a comentario
Compartir con otras webs

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

Enlace a comentario
Compartir con otras webs

Invitado 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

Enlace a comentario
Compartir con otras webs

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!

Enlace a comentario
Compartir con otras webs

Invitado 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).

Enlace a comentario
Compartir con otras webs

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

Enlace a comentario
Compartir con otras webs

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

  • 93 ¿Te parecen útiles los tips de las funciones? (ver tema completo)

    1. 1. ¿Te parecen útiles los tips de las funciones?


      • No
      • Ni me he fijado en ellos

  • Ayúdanos a mejorar la comunidad

    • Donaciones recibidas este mes: 0.00 EUR
      Objetivo: 130.00 EUR
  • Archivos

  • Estadísticas de descargas

    • Archivos
      177
    • Comentarios
      90
    • Revisiones
      27

  • Crear macros Excel

  • Mensajes

    • Gracias tomarse el tiempo de leer por responder Maestro @Antoni Adjunto el archivo con la idea a la que deseo llegar, sigo atento. Mil gracias por el tiempo y la ayuda brindada   Media Attention Formula 1.2.xlsb
    • He analizado la UDF y entiendo perfectamente lo que hace, lo que no entiendo es lo que pretendes hacer. Mejor sube un ejemplo resuelto de  como debería funcionar la UDF con los nuevos parámetros solicitados. 
    • Gracias, ya lo conseguí solucionar
    • Hola a todos Primero que nada deseo agradecer el tiempo en leer este post, Muchas Gracias. Me acerco a ustedes para pedir su ayuda para lo siguiente: Tengo una UDF, la cual tiene dos escenarios: 1.- Si Tiempo Promedio y Duración del Video son diferentes de 0, hacer el calculo 2.- Si lo anterior es igual a 0, se realiza el otro calculo por cuartiles. El detalle es que son muchas celdas a seleccionar, lo cual creo puede ser engorroso, entonces, pensando en simplificar la función, me pregunte si fuera posible: a.- Colocar 1 al principio de la función y después solo seleccionar 2 celdas correspondientes (Rango continuo o discontinuo) b.- Colocar 2 al principio de la función y después seleccionar las 5 celdas correspondientes (Rango continuo o discontinuo) Espero me puedan ayudar y/o orientar al respecto, quedo atento para cualquier duda, de antemano les agradezco cualquier ayuda brindada. Mil Gracias!! Media Attention Formula 1.1.xlsb  
    • si dentro de un tiempo "razonable" no consigues alguna propuesta, considera la posibilidad de que tu consulta no sea lo claro necesaria (?) la forma de preguntar en foros (como este) "debiera" ser como sigue: en tu siguiente mensaje, agrega comentarios que contengan (como minimo) lo siguiente: > claridad... detalle... procedimiento... resultado esperado - - (opcional: formulas y funciones intentadas, rangos, ejemplos resueltos a mano, etc.) > de la "claridad" en el "detalle"... se obtiene la claridad del "procedimiento" > de la claridad en el procedimiento... se obtiene el "resultado esperado" si te resulta dificil explicar con palabras, adjunta (una copia muy RE-DU-CI-DA de) TU modelo por "re-du-ci-da" me refiero a un adjunto de no mas de 10 a 30 Kb (SIN "formatitis") considerando que: "la parte mas importante de una instruccion... es el resultado que se debe obtener"
  • Visualizado recientemente

    • No hay usuarios registrado para ver esta página.
×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.