我需要帮助来编写一个代码,将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
开始计算
答案 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
编辑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)