请原谅我的无知,但我需要以下代码的帮助
Sub D3()
Dim currentRow As String
Dim sTemp As String
sTemp = Range("D3").Formula 'cell in sheet that needs reference to be increased
Do While (IsNumeric(Right(sTemp, 1)))
currentRow = Right(sTemp, 1) & currentRow
sTemp = Mid(sTemp, 1, Len(sTemp) - 1)
Loop
currentRow = CLng(currentRow) + 1 'Number to increment cell reference by
Range("D3").Formula = sTemp & currentRow
End Sub
由于我忘记了大部分编码,而且我认为这是一个简单的解决方案,我去google并获得了上面的代码。它在单个单元格上运行良好,但我希望能够在D3到D29的一系列单元格中更新公式,这就是我陷入困境的地方。
我试过
sTemp = Range("D3:D29").Formula
没有运气。
我目前唯一可以获得我想要的方法是创建120个宏并在Master Macro中运行它们 - 我相信你们会同意它并不是很有效。
我希望能够轻松地将解决方案应用到工作表中的其他列。
由于
答案 0 :(得分:0)
忽略您要执行此操作的原因。我想你缺少的是你只需要循环你的代码。
我想你知道的范围是D3:D29。修改您的代码如下
Sub D3()
Dim currentRow As String
Dim sTemp As String
Dim i as Integer
For i = 3 to 29
currentRow = ""
sTemp = Range("D" & i).Formula 'cell in sheet that needs reference to be increased
Do While (IsNumeric(Right(sTemp, 1)))
currentRow = Right(sTemp, 1) & currentRow
sTemp = Mid(sTemp, 1, Len(sTemp) - 1)
Loop
currentRow = CLng(currentRow) + 1 'Number to increment cell reference by
Range("D" & i).Formula = sTemp & currentRow
Next i
End Sub
答案 1 :(得分:0)
如果我已正确理解您的意图,以下代码应该可以解决问题。它假设目标范围中的公式是单个单元格引用(例如,“= CC95”)。*
我已经消除了阻止代码编译的类型转换错误。另外,我重写了有点混乱的代码来增加行号。
要在其他列上运行该过程,只需更改targetColumn,firstTargetRow和lastTargetRow变量的值。
Sub IncrementFormulaRows()
Dim formulaString As String
Dim targetColumn As String
Dim firstTargetRow As Long
Dim lastTargetRow As Long
Dim i As Long
Dim j As Long
targetColumn = "D"
firstTargetRow = 3
lastTargetRow = 29
For i = firstTargetRow To lastTargetRow
If Range(targetColumn & i).HasFormula Then '// Skip cell if it does not
formulaString = Range(targetColumn & i).Formula '// contain a formula
j = Len(formulaString)
While (j > 0) And IsNumeric(Mid(formulaString, j, 1)) '// Walk formula backwards
j = j - 1 '// to find last char of
Wend '// column reference
Range(targetColumn & i).Formula = Left(formulaString, j) _
& (Val(Mid(formulaString, j + 1, Len(formulaString) - j)) + 1)
End If
Next i
End Sub
*当使用更复杂的公式时,公式将实际运行,只要它以单个单元格引用结束即可。但是,我认为结果是不可取的。