将R1C1公式放在变量行上以引用同一列

时间:2016-11-22 16:15:19

标签: excel-vba vba excel

我需要帮助来编写一个代码,将R1C1公式放入行的单元格中。

每次运行宏时,行的起始位置都会有所不同。 IE浏览器。如果第一次运行宏,则公式将作为R [-5] C [3]输入到行B16中。在这种情况下,R [-5]是E12。

然而,当宏再次运行时,&它进入B25行,我仍然希望它引用E3,但它引用了E20。

这是我的代码

Dim cell As Range, MyRange As Range 

Set MyRange = Range("B1:B5000")

For Each cell In MyRange

If cell = " " And cell.Offset(, 1) <> "Record" Then

cell.FormulaR1C1 = "=SUM(R[-5]C[3]: SUM(R[-5]C[4])"

End If

Next cell

End With

你是对的,我的代码试图说This row - 5, this column + 3: this row -5, this column + 4 我遇到的问题是这一行可能是任何一行&amp;我想使用相对引用,因为这个公式会复制到下一行 所以我要做的就是这个

Cell B16 = E11+F11
Cell B17 = E12+F12
Cell B18 = E13+F13 etc

然后当宏再次运行时&amp;起始单元格是E25,然后

Cell E25 = E20+F20
Cell E26 = E21+F21
Cell E26= E22+F22 etc

因此,无论宏指向哪个单元格,它都将始终从E11+F11开始计算

2 个答案:

答案 0 :(得分:0)

这是我的代码

Dim cell As Range,MyRange As Range 设置MyRange =范围(“B1:B5000”)

对于MyRange中的每个单元格

if cell =“”and cell.Offset(,1)&lt;&gt; “记录”然后

cell.FormulaR1C1 =“= SUM(R [-5] C [3]:SUM​​(R [-5] C [4])”

结束如果

下一个单元格

结束

答案 1 :(得分:0)

您在公式中使用了相对引用,如果在单元格B6中输入{1},则该公式将无效。任何比这更高的行,它将尝试引用该表。

要使用绝对引用,请使用=SUM(E1:SUM(F1)(第3行,第5列= E3) 最好你的公式试图说R3C5

也许尝试This row - 5, this column + 3: this row -5, this column + 4"=SUM(R3C5:R3C4)"相同。

另外 - =SUM($E$3:$F$3) - 单元格必须包含单个空格?它应该是cell = " "吗?

修改: 为了响应您的编辑 - 如果您希望第一个公式始终查看E11:F11,接下来是E12:F12等,您可以使用以下解决方案之一:

要将公式添加到一次点击中的所有行 - 这不会检查具有空格的单元格:

cell = ""

在添加公式之前检查每个单元格是否有空格:

Public Sub Test()

    Dim MyRange As Range
    Dim lOffset As Long

    Set MyRange = Range("B1:B5000")

    With MyRange
        lOffset = 11 - .Row
        .FormulaR1C1 = "=IF(RC[1]<>""Record"",SUM(R[" & lOffset & "]C5:R[" & lOffset & "]C6),"""")"
    End With

End Sub  

这是第二个代码块的结果,显示公式总是从第11行开始:
enter image description here

如果你改变了公式的范围:
enter image description here

编辑2:
如果行20:24有记录,那么这将在行25中放置Public Sub Test1() Dim MyRange As Range Dim rCell As Range Dim lOffset As Long Set MyRange = Range("B30:B5000") lOffset = 11 - MyRange.Row For Each rCell In MyRange If rCell = " " And rCell.Offset(, 1) <> "Record" Then rCell.FormulaR1C1 = "=SUM(R[" & lOffset & "]C5:R[" & lOffset & "]C6)" End If Next rCell End Sub 。如果第26行有记录,那么第27行将有=SUM($E11:$F11)

=SUM($E12:$F12)