VBA умножают ячейки в одном листе и вставляют их в другой - PullRequest
0 голосов
/ 28 февраля 2020

Попытка умножить последние 3 ячейки столбца на последние 3 ячейки другого столбца на листе «ДАННЫЕ» и вставить их на другой лист с именем «Отчет».

У меня есть этот код, который выглядит неправильно, но, возможно, вы можете помочь? :)

Sheets("DATA").Activate
' Use this lRow now since the previous one require you to be in a With loop
Range("A" & lRow - 2 & ":A" & lRow).Copy

With Sheets("Report")
.Activate
' Pastes the last 3 cells of Column A into the Month column
.Range("B9").PasteSpecial Paste:=xlPasteAll
.Range("B8").Formula = "Month"
.Range("C8").Formula = "Production Cost"
' Calculates the Production cost
.Range(.Cells(lRow - 3, 2), .Cells(lRow, 2)).Copy
.Range("C9").AutoFill Destination:=Range("C9:C11")
' Calculates the Inventory cost
.Range("C14").Select
.Range("D8").Formula = "Inventory Cost"
.Range("E8").Formula = "Total Cost"
.Range("B12").Formula = "Total"
End With

1 Ответ

0 голосов
/ 28 февраля 2020
Sub asd()

'Fills the labels of the table
Sheets("report").Range("B8").Value = "Month"
Sheets("report").Range("C8").Value = "Production Cost"
Sheets("report").Range("D8").Value = "Inventory Cost"
Sheets("report").Range("E8").Value = "Total Cost"
Sheets("report").Range("B12").Value = "Total"
'Fills the labels of the table

lastrow = Sheets("data").Range("A1").End(xlDown).Row
For i = 2 To 0 Step -1
    Sheets("report").Cells(lastrow - i - 2, 2).Value = Sheets("data").Cells(lastrow - i, 1).Value
    Sheets("report").Cells(lastrow - i - 2, 3).Value = Sheets("data").Cells(lastrow - i, 2).Value * Sheets("data").Cells(lastrow - i, 4).Value
    Sheets("report").Cells(lastrow - i - 2, 4).Value = Sheets("data").Cells(lastrow - i, 3).Value * Sheets("data").Cells(lastrow - i, 5).Value
    Sheets("report").Cells(lastrow - i - 2, 5).Value = Sheets("report").Cells(lastrow - i - 2, 3).Value + Sheets("report").Cells(lastrow - i - 2, 4).Value
Next i

Sheets("report").Range("C12").Formula = "=SUM(C9:C11)"
Sheets("report").Range("D12").Formula = "=SUM(D9:D11)"
Sheets("report").Range("E12").Formula = "=SUM(E9:E11)"
End Sub

Попробуйте это. Это не очень универсальный код, поэтому, если у вас возникли проблемы с ним, дайте мне знать, это, скорее всего, потому что ваши данные и мои находятся в разных местах. Я поделился своим «листом данных», вы можете использовать его в качестве справочного материала. enter image description here

И вот результат на листе «отчета»: enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...