Modificar Macro para excel. ¿Cómo modificar la celda de origen y la celda de destino de datos?

Tengo la siguiente macro, para copiar datos de la hoja BÚSQUEDA a la hoja PRESUPUESTO con las siguientes condiciones:

1. Debo extraer de "Búsqueda", las líneas que en la columna "I" tenga el valor "SI"
2. Copiar estos datos en "Presupuesto" siguiendo la siguiente orrespondencia de columnas: A en A, B en B, C en C, H en D. Las otras, se descartan.
3. En la hoja "Presupuesto", la fila del "total" debería adaptarse a la cantidad de filas copiadas
La macro original, copia datos a partir de la celda A9 y pega desde A9. Al intentar modificala para que tanto la celda de origen y la celda destino sea A12, me devuelve errores como este #¡VALOR! En la columna D o TOTAL
Sub COPIAR()
Set H1 = Worksheets("BÚSQUEDA")
Set H2 = Worksheets("PRESUPUESTO")
Set DATOS = H1.Range("A9").CurrentRegion
With DATOS
    FILAS = .Rows.Count: COLUMNAS = .Columns.Count
    .Sort KEY1:=H1.Range(.Columns(COLUMNAS).Address), ORDER1:=xlDescending, Header:=XLTRUE
    CUENTA = WorksheetFunction.CountIf(.Columns(COLUMNAS), "SI") + 1
End With
H2.Range("A9").CurrentRegion.Clear
Set DESTINO = H2.Range("A9").Resize(CUENTA, COLUMNAS)
With DESTINO
    .Columns(1).Resize(CUENTA, 3).Value = _
    DATOS.Columns(1).Resize(CUENTA, 3).Value
    .Columns(4).Resize(CUENTA, 1).Value = _
    DATOS.Columns(7).Resize(CUENTA, 1).Value
    .Cells(2, 5).Resize(CUENTA - 1, 1).Formula = "=B10*D10"
    .Cells(CUENTA + 2, 5).Formula = "=SUM(" & .Columns(5).Address & ")"
    .Cells(CUENTA + 2, 5).Font.Bold = True
    .Cells(CUENTA + 2, 4) = "TOTAL"
    .Cells(CUENTA + 2, 4).Font.Bold = True
    .Cells(1, 5) = "TOTAL"
    .Rows(1).Font.Bold = True
End With
End Sub

Dejo dos imágenes: Una de la hoja "BÚSQUEDA" la otra de cómo debería quedar la hoja "PRESUPUESTO"

1 respuesta

Respuesta
1

Eso es porque no modificaste la línea que hace las multiplicaciones en la columna DE o total, este es el resultado de la macro modificada

y esta es la macro modificada

Sub COPIAR()
Set H1 = Worksheets("BUSQUEDA")
Set H2 = Worksheets("PRESUPUESTO")
Set DATOS = H1.Range("A12").CurrentRegion
With DATOS
    FILAS = .Rows.Count: COLUMNAS = .Columns.Count
    .Sort KEY1:=H1.Range(.Columns(COLUMNAS).Address), ORDER1:=xlDescending, Header:=XLTRUE
    CUENTA = WorksheetFunction.CountIf(.Columns(COLUMNAS), "SI") + 1
End With
H2.Range("A12").CurrentRegion.Clear
Set DESTINO = H2.Range("A12").Resize(CUENTA, COLUMNAS)
With DESTINO
    .Columns(1).Resize(CUENTA, 3).Value = _
    DATOS.Columns(1).Resize(CUENTA, 3).Value
    .Columns(4).Resize(CUENTA, 1).Value = _
    DATOS.Columns(8).Resize(CUENTA, 1).Value
    .Cells(2, 5).Resize(CUENTA - 1, 1).Formula = "=B13*D13"
    .Cells(CUENTA + 2, 5).Formula = "=SUM(" & .Columns(5).Address & ")"
    .Cells(CUENTA + 2, 5).Font.Bold = True
    .Cells(CUENTA + 2, 4) = "TOTAL"
    .Cells(CUENTA + 2, 4).Font.Bold = True
    .Cells(1, 5) = "TOTAL"
    .Rows(1).Font.Bold = True
    .CurrentRegion.EntireColumn.AutoFit
    .Columns(4).Resize(FILAS, 2).NumberFormat = "$0,00.00"
    .CurrentRegion.HorizontalAlignment = xlCenter
End With
Set DATOS = Nothing
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas