¿Cómo puedo direccionar una suma a un libro / hoja, fila en especifico?

He desarrollado una macro, que realiza sumas, pero necesito el resultado en un libro,, hoja y fila en especifico, ¿me podrías apoyar de favor?

1 respuesta

Respuesta
1

Te anexo un ejemplo

Sub macro()
'
    '
    'en esta parte va tu macro
    '
    'suponiendo que en la variable suma tienes el resultado
    '
    libro = "varios 28oct2016.xlsm"
    hoja = "Datos"
    celda = "A5"
    Workbooks(libro).Sheets(hoja).Range(celda) = suma
    '
End Sub

El libro deberá estar abierto.

Si el nombre del libro lo tienes en alguna celda, cambia "varios 28oct2016.xlsm", por la referencia, lo mismo para la hoja y la celda.

Si la celda destino la tienes que calcular, por ejemplo, quieres guardar la suma en la siguiente celda disponible de la columna A, entonces podría ser así:

Sub macro()
'
    '
    'en esta parte va tu macro
    '
    'suponiendo que en la variable suma tienes el resultado
    '
    libro = "varios 28oct2016.xlsm"
    hoja = "Datos"
    u = Workbooks(libro).Sheets(hoja).Range("A" & Rows.Count).End(xlUp).Row + 1
    celda = "A" & u
    Workbooks(libro).Sheets(hoja).Range(celda) = suma
    '
End Sub

si es lo que necesitas, r ecuerda valorar la respuesta.

¿Tienes algún correo para adjuntar archivo?

Gracias

Mi correo [email protected]

En el asunto del correo escribe tu nombre de usuario “Cecilio Pérez Maqueda” y el título de esta pregunta.

Date te envíe mi pregunta que me indicabas Gracias

Cecilio Perez Maqueda

Te anexo la macro

Sub Ventas()
'Por.Dante Amor
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    Set l1 = ThisWorkbook
    Set h1 = l1.Sheets("Hoja1")
    ruta = l1.Path & "\"
    u = h1.Range("A" & Rows.Count).End(xlUp).Row
    h1.Range("B2:B" & u + 2).ClearContents
    '
    For i = 2 To u
        arch = h1.Cells(i, "A")
        If Dir(ruta & arch) <> "" Then
            Set l2 = Workbooks.Open(ruta & arch, ReadOnly:=True)
            Set h2 = l2.Sheets(1)
            Dim fec As Date
            fec = h2.Range("A10")
            If IsDate(fec) Then
                mes = Format(fec, "mmmm")
                existe = False
                For Each h In l1.Sheets
                    If UCase(h.Name) = UCase(mes) Then
                        existe = True
                        Exit For
                    End If
                Next
                If existe Then
                    u = h2.Range("A" & Rows.Count).End(xlUp).Row
                    s_mag = WorksheetFunction.SumIf(h2.Range("D10:D" & u), "*MAGNA*", h2.Range("F10:F" & u))
                    c_mag = h1.Cells(i, "C")
                    s_pre = WorksheetFunction.SumIf(h2.Range("D10:D" & u), "*PREMIUM*", h2.Range("F10:F" & u))
                    c_pre = h1.Cells(i, "D")
                    s_die = WorksheetFunction.SumIf(h2.Range("D10:D" & u), "*DIESEL*", h2.Range("F10:F" & u))
                    c_die = h1.Cells(i, "E")
                    Set h11 = l1.Sheets(mes)
                    h11.Range(c_mag) = s_mag
                    h11.Range(c_pre) = s_pre
                    h11.Range(c_die) = s_die
                    h1.Cells(i, "B") = "Procesado " & mes
                Else
                    h1.Cells(i, "B") = "No existe la hoja " & mes
                End If
            Else
                h1.Cells(i, "B") = "No tiene fecha en la celda A10"
            End If
            l2.Close False
        Else
            h1.Cells(i, "B") = "Archivo no existe"
        End If
    Next
    Application.ScreenUpdating = True
    MsgBox "Proceso terminado", vbInformation
End Sub

R ecuerda cambiar la valoración a la respuesta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas