我也在这里问过它: http://www.mrexcel.com/forum/excel-questions/796167-numbering-increments-1-1-n.html
我正在使用命名单元格,从该位置, 13 位置向右,我想要开始编号,直到它到达最后一个单元格来自同一命名单元格的 2 位置的列。我问,因为我的桌子会改变,并且有一个命名参考对此有好处。
这是我在录制宏并清理其 .Select 后得到的,它仍然具有硬编码的目标范围。
以下是一个说明性示例:
Sub Macro2()
Range("endofheaders").Offset(0, 13).FormulaR1C1 = "1"
Range("endofheaders").Offset(0, 13).AutoFill Destination:=Range("DZ6:DZ21"), Type:=xlFillSeries
End Sub
我希望这不会让人感到困惑,但是当我没有考虑到我的源表会改变它的大小时,下一个代码就是我曾经拥有的代码。它到处都有硬编码范围,这就是为什么当我编辑表格时,它停止了工作。
With Range("EA6:EA" & Range("DN" & Rows.count).End(xlUp).Row)
.Cells(1, 1).Value = 1
.DataSeries Rowcol:=xlColumns, Type:=xlLinear, Step:=1, Trend:=False
End With
提前致谢。
答案 0 :(得分:0)
可以编写所有I列单元格公式:=IF(INDIRECT("E" & ROW()) <> "", <formula>, "")
。
所有P柱单元格公式都可以写成:=IF(INDIRECT("E" & ROW()) <> "", ROW() + 1, "")
。
如果这些需要与您的命名参考相关,则其编写如下:
I-column:
=IF(INDIRECT("R" & ROW() & "C" & COLUMN(EOH) + 1, FALSE) <> "", <formula>, "")
P-柱:
=IF(INDIRECT("R" & ROW() & "C" & COLUMN(EOH) + 1, FALSE) <> "", ROW() + 1, "")
其中EOH是您的命名参考。
拖动这两列&#39;公式下1000多行。完成。
答案 1 :(得分:0)
使用命名范围聪明。顺便说一句,试试这个:
编辑1:如果你想坚持自动填充,我已经包含了代码(参见注释行)
Sub Test()
Dim rng As Range, rngtofill As Range
Dim lrow As Long, myformula As String
myformula = "your_formula"
With Sheet8 '~~> Change to your actual sheet
Set rng = .Range("endofheaders")
lrow = .Range(Split(rng.Offset(0, 2).Address, "$")(1) _
& .Rows.Count).End(xlUp).Row
Debug.Print lrow
Set rngtofill = .Range(rng.Offset(0, 13).Address, _
Split(rng.Offset(0, 13).Address, "$")(1) & lrow)
Debug.Print rngtofill.Address
rngtofill.Offset(0, -7).FormulaR1C1 = myformula
rngtofill.Formula = "=ROW(A1)"
rngtofill.Value = rngtofill.Value
'rngtofill.Resize(1, 1).FormulaR1C1 = "1"
'rngtofill.Resize(1, 1).AutoFill rngtofill, xlFillSeries
End With
End Sub
我在编号方面做了另一种方法
Debug.Print
的额外行只是检查我是否得到了正确的值
如果您想使用自动填充,则取决于您
我在代码中对它进行了评论。 HTH。