Macro para resta de columnas no simultáneas

Necesitaría una macro para VBA que me reste dos columnas no simultáneas (una siempre fija), pero que al añadir columnas me coja esa última columna.

Tengo tres datos:

Celda E8: 81.585

Celda F8: 97.097

Celda G8: =F8-E8

Si añado una columna entre F y G, necesito que me reste automáticamente H y E (la columna E siempre sería fija), y así sucesivamente semana tras semana. La resta siempre estaría una columna más a la derecha.

2 Respuestas

Respuesta

[Hola

Es complicado ayudarte ya que no das detalles ¿qué celdas tienen datos? ¿Solo tres? ¿En qué momento insertar una nueva columna? ¿En alguna celda de esa nueva columna se asume que ingresas datos, o qué? Etc.

Abraham Valencia

Hola Abraham,

Disculpa la tardanza, pero daba por hecho que me llegaría un e-mail informándome que tenía respuesta.

No... Hay muchas con datos.

La columna la inserto yo con otra macro que tengo (la intención es fusionarlas después)

Sí la nueva columna tendrá datos.

Con la imagen que adjunto intento explicarmen mejor:

Cuando inserte una columna entre AZ y BA, necesito que BB sea: BA-E, y así sucesivamente.

Cuando inserte entre BA y BB, necesitaré que BC=BB-E.


Y ya, a poder ser que solo donde haya números... Por ejemplo en BB24 y 25 no...

Gracias

Si mal no te entendí, y suponiendo (para el ejemplo) que los datos a cambiar van de la fila 2 a la 10, entonces prueba así:

Dim CeldaLlena As String, LetraColumna As String
Dim Celda As Range
Let CeldaLlena = Cells(2, Columns.Count).End(xlToLeft).Address 'El 2 de aquí se cambia se comienza en otra fila
Let LetraColumna = Mid(Range(CeldaLlena).Address, 2, (InStr(2, Range(CeldaLlena).Address, "$")) - 2)
For Each Celda In Range(CeldaLlena & ":" & LetraColumna & 10) 'El 10 de aquí se cambia si la última celda a cambiar es otra fila
    Celda.Formula = "=" & Celda.Offset(0, -1).Address(0, 0) & "-E" & Celda.Row
Next Celda

Prueba, adapta y comentas

Abraham Valencia

Respuesta

Si no tienes datos antes de las columna E esta es la macro que ocupas, en la imagen ves es resultado de la macro, cada que insertes una fila y corras la macro esta tomara la ultima columna a la derecha y la restara de la columna E

esta es la macro, bastante sencilla y muy efectiva

Sub RESTAR_COLUMNAS()
Set datos = ActiveSheet.UsedRange
With datos
    C = .Columns.Count
    .Columns(C + 1) = "=E1-" & .Cells(1, C).Address(False, False)
End With
Set datos = Nothing
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas