Hay una fórmula para que detecte hasta donde termina una tabla

Quiero saber si hay una fórmula de rango para que una columna se llene automáticamente con la fórmula de sumar ya que en la macro que estoy haciendo solo se llene hasta el rango que tengo, pero quiero cambiar eso. Les agradecería mucho su ayuda.

Lo que esta en negritas es lo que quiero cambiar para que detecte hasta donde termine la tabla automáticamente.

Este es el código que estoy utilizando:

Sheets("Sheet1").Select
Range("Y5").Select
ActiveCell.FormulaR1C1 = "suma"
Range("Y6").Select
ActiveCell.FormulaR1C1 = "=SUM(RC[-12]:RC[-9])"
Range("Y6").Select
Selection.AutoFill Destination:=Range("Y6:Y651"), Type:=xlFillDefault
Range("Y6:").Select
Columns("E:E").Select
Selection.Copy
Sheets("Sheet2").Select
Columns("A:A").Select
ActiveSheet.Paste
Sheets("Sheet1").Select
Columns("Y:Y").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Sheet2").Select
Columns("B:B").Select
ActiveSheet.Paste
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Rows("1:4").Select
Range("A4").Activate
Application.CutCopyMode = False
Selection.Delete Shift:=xlUp
Range("D4").Select
Sheets("Pivote").Select
ActiveSheet. PivotTables("PivotTable3"). PivotCache. Refresh

Respuesta
1

¿Por qué no conviertes tus datos en TABLA de Excel?... para eso existen las TABLAS para que se autocompleten las fórmulas sin necesidad de programar.

Es un tabla que ya esta echa

Una tabla... no es necesariamente una TABLA de Excel... son cosas diferentes

En una TABLA de Excel... basta escribir una fórmula en la primera fila para que se copie automáticamente hacia todas los otras celdas en la misma columna.

Para convertir lo que te parece una tabla en una TABLA de Excel... usa Insertar, Tabla (no es Tabla Dinámica... es simplemente TABLA)

2 respuestas más de otros expertos

Respuesta
3

Si la hoja no tiene otros datos debajo de la tabla que necesitas rellenar, debes buscar la última fila desde alguna columna que esté completa, suponiendo entonces que sea la col A agrega esta instrucción:

x = Range("A" & Rows.count).end(xlup).Row

Range("Y6").FormulaR1C1 = "=SUM(RC[-12]:RC[-9])"
Range("Y6").
AutoFill Destination:=Range("Y6:Y" & x), Type:=xlFillDefault

Observa que no hace falta seleccionar la celda antes de colocar la fórmula ni para rellenarla. Aligerarás el código de este modo.

Sdos y no olvides valorar la respuesta (con opción excelente o buena)

Muchas gracias! Pero si son varias columnas que tengo que sumar eso no afectaría en la fórmula:

x = Range("A" & Rows.count).end(xlup).Row

¿O le tendría que cambiar a las fórmulas que son? (M:P) estas son mis columnas que se están sumando

Mira así que ya el código que me dijiste pero al momento de hacer una prueba por paso me sale este error:

O nomas le tengo que dejar una columna

La variable es para indicar el fin de rango de una tabla... no utilices tus columnas a sumar porque seguramente todavía no tienen datos... utiliza alguna otra.

Y luego esa variable te sirve para indicar el fin de rango de todas las col que llevaran fórmulas.

Sdos.

Respuesta
2

Prueba esta macro, es dinámica solo colocara en aquellas filas que tengan datos, tienes demasiados select eso en una macro no es bueno

Sub sumar_datos()
Set h1 = Worksheets("hoja1")
Set h2 = Worksheets("hoja2")
Set datos = h1.Range("m6").CurrentRegion
With datos
    r = .Rows.Count
    Set sumas = Range("y6").Resize(r, 1)
    sumas.Formula = "=sum(" & .Rows(1).Address(False, False) & ")"
    sumas.Cells(0, 1) = "suma"
    sumas.Cells(0, 1).HorizontalAlignment = xlCenter
End With
h1.Range("e5").CurrentRegion.Copy: h2.Range("a1").PasteSpecial xlValues
h1.Range("y6").CurrentRegion.Copy: h2.Range("b1").PasteSpecial xlValues
set datos=nothing: set sumas = nothing
end sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas