自动填充从A列到B列的数字序列

时间:2016-07-21 06:35:37

标签: excel vba excel-vba

这是一个跟进问题:

Autofill the same number from column A in column B

我想创建如下输出:

  Column A | Column B
1.    1          1
2.               2
3.    2          1
4.               2
5.               3

我尝试了brettdj的答案,对FormulaR1C1进行了一些修改,现在的公式是。

=IF(RC[-1]<>"""",RC[-1],R[-1]C+1)

但是它从A列而不是1开始计算。

如何让它从1开始计数?

4 个答案:

答案 0 :(得分:2)

您可以使用:

=IF(ROW(A1)=1,1,IF(A1<>"",1,OFFSET(B1,-1,0)+1))

这需要对第一行进行测试,然后对后续行使用OFFSET函数。

E.g:

enter image description here

答案 1 :(得分:1)

如果我理解正确,以下是您的答案。

假设您的数据以A2开头,则在B2中应用以下公式并向下拖动到最后一个

=IF(AND(A2<>"",B1<>""),1,B1+1)

<强>证明 enter image description here

答案 2 :(得分:1)

尝试用以下代码替换公式"=IF(RC[-1]<>"""",RC[-1],R[-1]C+1)"

"=IF(RC[-1]<>"""",1,R[-1]C+1)"

答案 3 :(得分:0)

修改:我的第一个答案是按照linked question

中的要求获取序列

所以我编辑了为你的实际问题添加代码...

实际问题的代码

我喜欢以下

Sub FastUpdate(rng As Range)
    With rng.Offset(, 1)
        .Cells(1, 1) = 1
        .Offset(1).Resize(.Rows.Count - 1).FormulaR1C1 = "=IF(ISBLANK(RC1),R[-1]C+1,1)"
    End With
End Sub

使用如下

Sub main()

    FastUpdate Worksheets("MySheetName").Range("A1:A14") '<--| use whatever range you need. best use fully qualified reference

End Sub

关联问题的代码

我是这样的:

Sub FastUpdate(rng As Range)
    With rng.Offset(, 1)
        .Value = .Offset(, -1).Value
        .SpecialCells(xlCellTypeBlanks).FormulaR1C1 = "=R[-1]C"
        .Value = .Value
    End With
End Sub

使用如下:

Sub main()

    FastUpdate Worksheets("MySheetName").Range("A1:A14") '<--| use whatever range you need. best use fully qualified reference

End Sub