VBA 遍历列中的值,将值放在影响公式的单元格中,并将结果公式复制并粘贴到相邻列

VBA to loop through values in column, place values in cell that affects formula, and copy and paste resultant formula to adjacent column

对 VBA 不是很了解,但我 assuming/hoping 这是一个相当简单的问题。我有一个工作表,其中 K 列具有可以在单元格 E1 中输入的任何值。单元格 B25 包含一个简单的公式 (=$B$24-$B$8),但受其他公式的影响,这取决于单元格 E1 中的值。

我需要的是让 E1 与 K 列中的值一起循环,并将计算出的值粘贴到 L 列中的 B25 中,用于 K 列中的每个值。我有 2 个 VBA 代码,我'我在工作,但他们都没有按照我们需要的方式工作。

Sub Check()
Dim c As Range, sh1 As Worksheet
Set sh1 = Sheets("Sheet1")
    For Each c In sh1.Range("K2", Cells(Rows.Count, "K").End(xlUp))
        sh1.Range("E1") = c.Value
        sh1.Range("B25", Cells(Rows.Count, "B").End(xlUp)).Copy
        sh1.Range("L2", Cells(Rows.Count, "L").End(xlUp)).PasteSpecial Paste:=xlPasteValues
         Next
End Sub

        Sub Check2()
    Dim sh1 As Worksheet, c As Range
    Set sh1 = Sheets("Sheet1")
        For Each c In sh1.Range("K2", sh1.Cells(Rows.Count, "K").End(xlUp))
            sh1.Range("E1") = c.Value
            sh1.Range("B25", sh1.Cells(Rows.Count, 2).End(xlUp).Offset(, 2)).Copy _
            sh1.Cells(Rows.Count, 12).End(xlUp)(2)
        Next

End Sub

第一个代码循环遍历 E1,post仅计算单元格 L2 中 B25 的计算值,因此我们无法知道它引用的是 K 列中的哪个对应项。

第二个代码更接近。它post按顺序计算L列中公式的结果,但它会为E1中循环列K值的每个实例重新计算,这意味着最终B25中公式的结果将post结果仅对应于列 L 中列 K 的最终值(即公式 =$B$24-$B$8 被复制并粘贴到列 L 中,用于列 K 中的每个值,但列 K 的最后一个值将位于单元格 E1 中,所以这就是公式所指的)。

我可能做错了,但如前所述,我不经常处理 VBA。我希望有人可以帮助我解决这个问题,但是如果我的请求不清楚或者有人需要更多信息,请告诉我!

试试这个。

Sub Check2()

Dim sh1 As Worksheet, c As Range

Set sh1 = Sheets("Sheet1")

For Each c In sh1.Range("K2", sh1.Cells(Rows.Count, "K").End(xlUp))
    sh1.Range("E1") = c.Value
    sh1.Range("B25", sh1.Cells(Rows.Count, 2).End(xlUp).Offset(, 2)).Copy
    sh1.Cells(Rows.Count, 12).End(xlUp)(2).PasteSpecial xlValues
Next

End Sub