在每个单元格的现有公式的末尾附加一个sumproduct

时间:2018-05-24 10:36:50

标签: excel vba excel-vba excel-2010

我的工作表中的SUPPOSE单元格G1具有此公式 = $ R $ 5 * I4 + $ S $ 5 * H4 + $ T $ 5 * G4 + $ U $ 5 * F4 + $ V $ 5 * E4 + $ W 5 $ * D4 + $ X $ 5 * C4 + $ Y $ 5 * B4

G2有一个不同的公式 = $ R $ 5 * I4 + $ S $ 5 * H4 + $ T $ 5 * G4 + $ U $ 5 * F4

现在对于这个现有公式,我想添加一个新的和产品$ X $ 5 * A4 像这样制作G1的新公式

= $ R $ 5 * I4 + $ S $ 5 * H4 + $ T $ 5 * G4 + $ U $ 5 * F4 + $ V $ 5 * E4 + $ W 5 $ * D4 + $ X $ 5 * C4 + $ Y $ 5 * B4 +的 $ X $ 5 * A4

和那样的G2 = $ R $ 5 * I4 + $ S $ 5 * H4 + $ T $ 5 * G4 + $ U $ 5 * F4 +的 $ X $ 5 * A5

所有细胞中的初始公式是不同的,所以这就是为什么我想写一个宏。请帮帮我

我已经让这段代码看了评论:

        Sub test2()

        Dim myRange As Range, Cell As Range
        Dim targetsheet As Worksheet
        Set targetsheet = Worksheets("Sheet1")
        Dim abc As String


        For i = 1 To 14
         abc = "R7" & "C" & (i + 24)
            With targetsheet
            Set myRange = .Range(.Cells(77, i + 2), .Cells(87, i + 15))
            End With
        '    MsgBox myRange
            For Each Cell In myRange
                If IsEmpty(Cell) Then
                'MsgBox ("=" & abc & "*R[-75]C[" & (-i + 1) & "]")

                    Cell.FormulaR1C1 = "=" & abc & "*R[-75]C[" & (-i + 1) & 
                       "]"
                Else
                    Cell = Cell.FormulaR1C1 & "+" & abc & "]*R[-75]C[" & (-i 
                  + 1) & "]"
                End If
            Next Cell
        Next i

        End Sub

现在,这个代码适用于i = 1但是只要我变成2; Cell.FormulaR1C1的值变为 R7C25 * R [-75] C 请帮我纠正这个。致谢

2 个答案:

答案 0 :(得分:0)

您可以使用Dim myCell As Range Set myCell = Range("A1") myCell = myCell.Formula & "+$X$5*A4" 获取并设置单元格公式,例如

R1C1

我想在你的情况下,你会将范围设置为所有单元格的位置并循环通过它们附加此结尾,但这不是我的网站的代码,所以如果你有一个游戏并发布一个新问题卡住了。

修改

根据您的问题更新,您仍然可以通过循环遍历每个单元格并使用Sub test() Dim myRange As Range, Cell As Range Set myRange = Range("G1:J8") For Each Cell In myRange Cell = Cell.FormulaR1C1 & "+R5C24*R[4]C[-6]" Next Cell End Sub 公式来使用此方法。

R5C24

$X$5是对单元格R[4]C[-6]的绝对引用,而{{1}}是您当前单元格的相对路径。

答案 1 :(得分:0)

由于您可以在公式的开头添加$X$5*A4,为什么不使用Excel上提供的replace工具?只需在所有单元格上将=替换为=$X$5*A4+

如果您想要动态引用A4,并且您要更改的第一个单元格是G1(实际上引用A4的单元格),请替换为=$X$5*INDIRECT(ADDRESS(ROW()+3;COLUMN()-6))+