Como insertar una columna despues de que el macro busque un nombre en los titulos

Podria alguien ayudarme por favor...

Tengo en la columna G1 el nombre de la columna como "Items" ya tengo el codigo para buscar este dato en la hoja, sin embargo necesito que al encontrar este campo el macro inserte una columna en H1 y me pegue la siguiente formula a partir de H2 hasta la ultima celda utilizada.

Formula:

               =IZQUIERDA(G2,(HALLAR("-",G2,9)-1))

Perdón por lo complejo de esta pregunta...

Gracias de antemano...

1 respuesta

Respuesta
1

¿Tiene alguna relación lo de buscar con poner la fórmula?

¿O simplemente quieres que se inserte una columna en H y luego poner la fórmula?

Si esto último es correcto, utiliza lo siguiente:

'Por. DAM
    Columns("H:H").Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
    u = ActiveSheet.UsedRange.Rows(ActiveSheet.UsedRange.Rows.Count).Row
    Range("H2:H" & u).FormulaR1C1 = "=LEFT(RC[-1],(SEARCH(""-"",RC[-1],9)-1))"

Lo que hace la macro es insertar una columna en H

Calcula la ultima fila utilizada y lo pone en la variable u

Después pone la fórmula en h2 hasta H y la última fila utilizada

El problema esta en que cada mes la posicion de el campo "Item" que ahorita tengo en G1  puede variar, es por eso que necesito que la columna nueva en donde quiero pegar la formula tiene que buscar la celda de "Item" para que agregue una columna inmediatamente despues.

¿Le falta algo a la macro que te envié?

¿Quieres decir que no siempre es la columna H?

Puedes explicarlo con datos y ejemplos o con imágenes

en donde esta la flecha azul seria el lugar en donde quiero agregar una columna para pegar la formula. SI EL CODIGO QUE ME ENVIASTE FUNCIONA 1000% el problema es que varia la posicion de Items (marcado en rojo)... :(

Perdona, pero sigo sin entender. El código funciona bien, ¿pero qué falta?

La macro calcula la última fila con datos, ¿quieres qué calcule la última fila pero de la columna G? Si es así, entonces sería así:

    Columns("H:H").Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
    u = ActiveSheet.Range("H" & Rows.Count).End(xlUp).Row
    Range("H2:H" & u).FormulaR1C1 = "=LEFT(RC[-1],(SEARCH(""-"",RC[-1],9)-1))"

Si no es lo anterior, dime lo siguiente en este orden:

1. Vamos por partes, ¿siempre se tiene que insertar en la columna H?

2. ¿Siempre se debe poner la fórmula de H2 y hasta H u?

Si ya está solucionado, no olvides valorar la respuesta

DAM

Perdon por la confusion, tu formula si funciona pero como lo mencionas.

No deje en claro que la columna que quiero insertar no siempre va a ir en H, por lo tanto las formulas se van a pegar en H2 - Hn, la columna debe de insertarse INMEDIATAMENTE despues de la columna en donde esta "Item"

Es por eso que primero necesito buscar  la celda que contiene "Item", depsues insertar una columna en la siguiente y ahi se va a pegar la formula en en esa columna desde renglon 2 hasta n.

Ahora sí, ya entendí.

Como no pusiste cómo haces la búsqueda de "Item", entonces deberás buscar como lo estoy poniendo en la macro, para obtener la columna siguiente y poder insertar la fórmula.

'Por. Dante Amor
Set b = Rows(1).Find("Item", lookat:=xlWhole)
If Not b Is Nothing Then
    Columns(b.Column + 1).Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
    u = Cells(Rows.Count, b.Column).End(xlUp).Row
    Range(Cells(2, b.Column + 1), Cells(u, b.Column + 1)) = "=LEFT(RC[-1],(SEARCH(""-"",RC[-1],9)-1))"
End If

DAM

WoW!! como lo haces eres un genio, te corren macros por las venas, me ayudaste muchisimo y ahora estoy estudiando tu formula para aprenderla y usarla en repetidas ocaciones... U R D BEST!!

¡Gracias

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas