Выполнение расчета для нескольких строк на одном листе по входным данным на другом листе - PullRequest
0 голосов
/ 07 мая 2020

У меня есть набор данных на листе «Результаты», и набор данных находится в ячейках B8: K900 (Фактические данные в этих ячейках, остальные ячейки имеют другую метаинформацию этого набора данных)

Каждый столбец этого набора данных относится к определенной переменной, например, столбец B имеет поток Steam, столбец C имеет температуру Steam et c.

Я хотел бы использовать эти значения для подключения к калькулятору на другом листе, строка за строкой.

В конечном итоге у меня будут результаты в 2 ячейках на другом листе, которые я хотел бы вернуть в столбцы L и M

Код на данный момент (я получаю ошибку в первой строке «ws1. Range ("B"). Copy Destination: = ws2.Range ("B6") "во время отладки):

Примечание. Goal Seek и Rerun - это 2 макроса, которые я хотел бы запустить после того, как одна строка сценария во входных данных, так как они помогут получить результаты. Поэтому я добавил их в l oop также

Любая помощь будет принята с благодарностью.

Sub Goal_Seek()
Range("I33").GoalSeek Goal:=Range("P33").Value, ChangingCell:=Range("E3")
End Sub


Sub Rerun()
Do Until Range("P20") = Range("P22").Value
    Range("P20") = Range("P22").Value
Loop
End Sub


Sub Calcs()
Dim wb As Workbook
Dim ws1 As Worksheet, ws2 As Worksheet, ws3 As Worksheet, ws4 As Worksheet, ws5 As Worksheet
Dim rng As Range
Set wb = ActiveWorkbook
Set ws1 = wb.Worksheets("Results")
Set ws2 = wb.Worksheets("PI Data")
Set ws3 = wb.Worksheets("Mole_avg")
Set ws4 = wb.Worksheets("eff")
Set ws5 = wb.Worksheets("FlueGas")
Set rng = ws1.Range("B8:M9")
    For Each Row In rng.Rows
        ws1.Range("B").Copy Destination:=ws2.Range("B6")
        ws1.Range("C").Copy Destination:=ws2.Range("B3")
        ws1.Range("D").Copy Destination:=ws2.Range("B4")
        ws1.Range("E").Copy Destination:=ws2.Range("B5")
        ws1.Range("G").Copy Destination:=ws2.Range("B7")
        ws1.Range("H").Copy Destination:=ws2.Range("B8")
        ws1.Range("I").Copy Destination:=ws2.Range("B9")
        ws1.Range("J").Copy Destination:=ws2.Range("B10")
        ws1.Range("K").Copy Destination:=ws2.Range("B11")

        Application.Run "Goal_Seek"
        Application.Run "Rerun"

        ws3.Range("P17").Copy Destination:=ws1.Range("L")
        ws3.Range("T22").Copy Destination:=ws1.Range("M")
    Next Row
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...