Agregar datos en mi siguiente columna disponible

ThePow

New Member
Joined
May 3, 2011
Messages
4
Hola amigos.

He buscado en el foro pero no encuentro algo que pueda ayudarme con mi cometido.

Me explico:

Tengo una macro que despues de filtrar un campo, me selecciona mis datos y los pega en otra hoja (hasta aquí todo bien).
Ahora necesito que despues de pegar los valores , agrege en la siguiente celda a la derecha (o mejor dicho, en la siguiente columna) una formula de suma.

excelfv.jpg


Aqui mi código

Code:
Sub Copiar_criterio()
'
' Copiar_criterio Macro
' copia celdas que cumplen el criterio

  Dim arrCriterio As Variant, i As Integer, hojaBase As String
    Dim x As String
    arrCriterio = Array("Si")
    hojaBase = ActiveSheet.Name
   
    For i = 0 To UBound(arrCriterio)
        Range("B1").Select
        Selection.AutoFilter Field:=9, Criteria1:=arrCriterio(i)
        Range(Selection, Selection.End(xlDown).End(xlToRight).End(xlToRight)).Select
        'Range(Selection, Selection.End(xlDown).End(xlToRight).End(xlToRight).End(xlToRight).End(xlToRight)).Select
        Selection.Resize(, Selection.Columns.Count + 1).Select
        'cada .End(xlToRight) equivale a las columnas que están combinadas para poder seleccionar a la derecha

        Selection.Copy
            
        Sheets("Descripcion gastos2").Select
   
        Range("A1").Select
        ActiveSheet.Paste
        'Cells.Select
        Range("F:F").Select
        Selection.Delete Shift:=xlToLeft
        Range("A1").Select
        Next
        MsgBox "Datos copiados !", vbInformation, "Datos copiados"

End Sub
....................

Saludos y muchas gracias de antemano.
 
Last edited:

Excel Facts

Copy formula down without changing references
If you have =SUM(F2:F49) in F50; type Alt+' in F51 to copy =SUM(F2:F49) to F51, leaving the formula in edit mode. Change SUM to COUNT.
Hola ThePow y bienvenido,

Podés probar con cualquiera de las siguientes opciones:


1-) Con For Loop (La más lenta):
Code:
Sub Sumar1()

Uf = Range("F1").End(xlDown).Row [COLOR=Green]'Ultima linea usada[/COLOR]
    Range("G2") = Range("F2")
    Range("G3") = Range("F2") + Range("F3")
For i = 4 To Uf
    Range("G" & i) = Range("F" & i) + Range("G" & i - 1)
Next
End Sub
2-) Usando Auto llenado.
Code:
Sub Sumar2()
Uf = Range("F1").End(xlDown).Row [COLOR=Green]'Ultima linea usada[/COLOR]
Range("G2") = Range("F2")
    Range("G3").FormulaR1C1 = "=R[-1]C+RC[-1]"
    Range("G3").AutoFill Destination:=Range("G3:G" & Uf)
End Sub
3-) Copiando la fórmula hasta la última fila de la columna G.
Code:
Sub Sumar3()
Uf = Range("F1").End(xlDown).Row [COLOR=Green]'Ultima linea usada[/COLOR]
    Range("G2") = Range("F2")
    Range("G3").FormulaR1C1 = "=R[-1]C+RC[-1]"
    Range("G3").Copy
    Range("G3:G" & Uf).PasteSpecial xlPasteAll
    Application.CutCopyMode = False
End Sub

Espero ayude.

Saludos cordiales
 
Upvote 0
Amigo ThePow esta macro está desarrollada solamente para la parte que necesitas; dices que todo lo inicial funciona correctamente, entonces puedes hacerlo como un procedimiento individual y llamarlo al final de tu programa principal utilzando Call.
El punto de esto está en el desplazamiento de las celda, pues tu lo que deseas es ir acumulando en la columna "G"; para ello debes usar las instrucciones: Range, Cells y Offset. Range("G2") ubica la dirección absoluta; Cells y Offset se desplazan relativamente alrededor de Range("G2") y por ello hacen el acumulado. Aunque seleccioné ["F3:F50"] por si hay más datos, las celdas sobrantes se controlan con un sencillo if endif utilizando una Constante. Si te interesa conocer un poco más del movimiento con Cells y Offset visita el siguiente enlace, donde escribo al respecto.
http://wp.me/p1vGy8-4, también me gustaría conocer tu opinión.

He aquí la macro acumulativa, espero sea lo solicitado.

Sub poste01()
Range("g:g").ClearContents
Dim Acum As Integer, Val
Range("f3:f50").Select 'Selecciono más celdas de las utilizadas
Range("g2") = [f2]
fli = 0
gli = 1
For Each Val In Selection
fli = fli + 1 'Línea de la Columna F
gli = gli + 1 'Línea de la Columna G
If VarType(Val) = vbEmpty Then 'Cuando llegue a una celda vacía
Exit For 'que salga del ciclo for.
End If

Range("g2").Offset(fli, 0).Value = Val + Cells(gli, 7).Value 'Se acumulan Valores
Next
[f2].Select 'quitamos la selección de todo el rango.
End Sub

Saludes y Bendiciones.
 
Last edited:
Upvote 0
Amigos muchas gracias,

Estoy leyendo las respuestas y despues comento el resultado,

De antemano gracias nuevamente!!!!
 
Upvote 0
Hola de nuevo, siento la tardanza.

Amigo cgcamal muchas gracias, los 3 códigos funcionan a la perfección.!!!! me quedé con el 3°.

MgaNic, gracias por el código acumulativo, cada día se aprende algo nuevo. y gracias por la teoria en tu blog.

Saludos!
 
Upvote 0

Forum statistics

Threads
1,224,524
Messages
6,179,308
Members
452,904
Latest member
CodeMasterX

We've detected that you are using an adblocker.

We have a great community of people providing Excel help here, but the hosting costs are enormous. You can help keep this site running by allowing ads on MrExcel.com.
Allow Ads at MrExcel

Which adblocker are you using?

Disable AdBlock

Follow these easy steps to disable AdBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the icon in the browser’s toolbar.
2)Click on the "Pause on this site" option.
Go back

Disable AdBlock Plus

Follow these easy steps to disable AdBlock Plus

1)Click on the icon in the browser’s toolbar.
2)Click on the toggle to disable it for "mrexcel.com".
Go back

Disable uBlock Origin

Follow these easy steps to disable uBlock Origin

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back

Disable uBlock

Follow these easy steps to disable uBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back
Back
Top