私たちは、エネルギー貯蔵装置(10 '、20'または40 'コンテナ)を使用して、彼らの歴史的な使用法に基づいて最高の行動。私たちは15分の増分データに応じて正しいサイズのuGrid(Energy Storage Solution)を見つけるのに役立つマクロを持っています。計算の主な部分はこのGoalSeekコードですが、完了には時間がかかります。最適化が必要なゴールシークコード
GoalSeekの各繰り返しは、1日あたり96のデータポイントで構成される毎月のデータを実行します。したがって、通年のデータセットには35,040行の区間データがあります。
シートには他にも多くの計算が行われており、どのシステムを設計する必要があるのか理解できます。
これをより効率的に行うにはどうすればよいですか?あなたが最適化するために、ピアレビューをしたいコードを作業している場合は、あなたの質問に掲示しなければならない
If Range("H1") > 1 Then
Application.EnableEvents = False 'Prevent looping based on the 'change' caused by multiplication
Cells(16, 7) = Cells(16, 7) * Range("H1")
Application.EnableEvents = True 'allow events again
End If
If Range("E3") = Range("SetNumberkW") Then
'Range("D3").Value = 0
Else:
Range("D3").Value = 0
Range("G3").GoalSeek Goal:=Range("SetNumberkWh"), ChangingCell:=Range("D3")
End If
If Range("E4") = Range("SetNumberkW") Then
Range("D4").Value = 0
Else:
Range("D4").Value = 0
Range("G4").GoalSeek Goal:=Range("SetNumberkWh"), ChangingCell:=Range("D4")
End If
If Range("E5") = Range("SetNumberkW") Then
Range("D5").Value = 0
Else:
Range("D5").Value = 0
Range("G5").GoalSeek Goal:=Range("SetNumberkWh"), ChangingCell:=Range("D5")
End If
If Range("E6") = Range("SetNumberkW") Then
Range("D6").Value = 0
Else:
Range("D6").Value = 0
Range("G6").GoalSeek Goal:=Range("SetNumberkWh"), ChangingCell:=Range("D6")
End If
If Range("E7") = Range("SetNumberkW") Then
Range("D7").Value = 0
Else:
Range("D7").Value = 0
Range("G7").GoalSeek Goal:=Range("SetNumberkWh"), ChangingCell:=Range("D7")
End If
If Range("E8") = Range("SetNumberkW") Then
Range("D8").Value = 0
Else:
Range("D8").Value = 0
Range("G8").GoalSeek Goal:=Range("SetNumberkWh"), ChangingCell:=Range("D8")
End If
If Range("E9") = Range("SetNumberkW") Then
Range("D9").Value = 0
Else:
Range("D9").Value = 0
Range("G9").GoalSeek Goal:=Range("SetNumberkWh"), ChangingCell:=Range("D9")
End If
If Range("E10") = Range("SetNumberkW") Then
Range("D10").Value = 0
Else:
Range("D10").Value = 0
Range("G10").GoalSeek Goal:=Range("SetNumberkWh"), ChangingCell:=Range("D10")
End If
If Range("E11") = Range("SetNumberkW") Then
Range("D11").Value = 0
Else:
Range("D11").Value = 0
Range("G11").GoalSeek Goal:=Range("SetNumberkWh"), ChangingCell:=Range("D11")
End If
If Range("E12") = Range("SetNumberkW") Then
Range("D12").Value = 0
Else:
Range("D12").Value = 0
Range("G12").GoalSeek Goal:=Range("SetNumberkWh"), ChangingCell:=Range("D12")
End If
If Range("E13") = Range("SetNumberkW") Then
Range("D13").Value = 0
Else:
Range("D13").Value = 0
Range("G13").GoalSeek Goal:=Range("SetNumberkWh"), ChangingCell:=Range("D13")
End If
If Range("E14") = Range("SetNumberkW") Then
Range("D14").Value = 0
Else:
Range("D14").Value = 0
Range("G14").GoalSeek Goal:=Range("SetNumberkWh"), ChangingCell:=Range("D14")
End If
' Start the kW offset part of the programming
If Range("F3") <= Range("SetNumberkW") Then
Range("D19").Value = 0
Else:
Range("D19").Value = 0
Range("F19").GoalSeek Goal:=Range("SetNumberkW"), ChangingCell:=Range("D19")
End If
If Range("F4") <= Range("SetNumberkW") Then
Range("D20").Value = 0
Else:
Range("D20").Value = 0
Range("F20").GoalSeek Goal:=Range("SetNumberkW"), ChangingCell:=Range("D20")
End If
If Range("F5") <= Range("SetNumberkW") Then
Range("D21").Value = 0
Else:
Range("D21").Value = 0
Range("f21").GoalSeek Goal:=Range("SetNumberkW"), ChangingCell:=Range("D21")
End If
If Range("F6") <= Range("SetNumberkW") Then
Range("D22").Value = 0
Else:
Range("D22").Value = 0
Range("f22").GoalSeek Goal:=Range("SetNumberkW"), ChangingCell:=Range("D22")
End If
If Range("F7") <= Range("SetNumberkW") Then
Range("D23").Value = 0
Else:
Range("D23").Value = 0
Range("f23").GoalSeek Goal:=Range("SetNumberkW"), ChangingCell:=Range("D23")
End If
If Range("F8") <= Range("SetNumberkW") Then
Range("D24").Value = 0
Else:
Range("D24").Value = 0
Range("F24").GoalSeek Goal:=Range("SetNumberkW"), ChangingCell:=Range("D24")
End If
If Range("F9") <= Range("SetNumberkW") Then
Range("D25").Value = 0
Else:
Range("D25").Value = 0
Range("F25").GoalSeek Goal:=Range("SetNumberkW"), ChangingCell:=Range("D25")
End If
If Range("F10") <= Range("SetNumberkW") Then
Range("D26").Value = 0
Else:
Range("D26").Value = 0
Range("F26").GoalSeek Goal:=Range("SetNumberkW"), ChangingCell:=Range("D26")
End If
If Range("F11") <= Range("SetNumberkW") Then
Range("D27").Value = 0
Else:
Range("D27").Value = 0
Range("F27").GoalSeek Goal:=Range("SetNumberkW"), ChangingCell:=Range("D27")
End If
If Range("F12") <= Range("SetNumberkW") Then
Range("D28").Value = 0
Else:
Range("D28").Value = 0
Range("F28").GoalSeek Goal:=Range("SetNumberkW"), ChangingCell:=Range("D28")
End If
If Range("F13") <= Range("SetNumberkW") Then
Range("D29").Value = 0
Else:
Range("D29").Value = 0
Range("F29").GoalSeek Goal:=Range("SetNumberkW"), ChangingCell:=Range("D29")
End If
If Range("F14") <= Range("SetNumberkW") Then
Range("D30").Value = 0
Else:
Range("D30").Value = 0
Range("F30").GoalSeek Goal:=Range("SetNumberkW"), ChangingCell:=Range("D30")
End If
のビット代わりに[codereview.se]に。このサイトは問題コードに関する質問です。 –