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

问题描述

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

我需要的是让E1与K列中的值循环通过,并为L列中的K列中的每个值将计算的值粘贴到L列的B25中。我有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","B").End(xlUp)).copy
        sh1.Range("L2","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",2).End(xlUp).Offset(,2)).copy _
            sh1.Cells(Rows.Count,12).End(xlUp)(2)
        Next

End Sub

一个代码循环通过E1并将B25的计算值仅存储在单元格L2中,因此我们无法知道它要引用的K列中的哪个对应项。

第二个代码更近了。它按顺序将公式的结果发布在L列中,但是会针对E1中循环的K列的每个实例重新计算值,这意味着最终B25中的公式结果将仅发布对应于K列最终值的结果在L列中(例如,对于K列中的每个值,将公式= $ B $ 24- $ B $ 8复制并粘贴到L列中,但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",2).End(xlUp).Offset(,2)).Copy
    sh1.Cells(Rows.Count,12).End(xlUp)(2).PasteSpecial xlValues
Next

End Sub