如何基于相邻单元格值创建跳过空白单元格的数字序列

时间:2017-05-23 14:45:47

标签: excel vba excel-vba

我有一个VBA问题,似乎无法找到解决方案。所以这里......

我需要在A列中创建一个数字序列,基于它旁边的单元格(在B列中)是否有数字。如果B列中的单元格为空白,则A列中的单元格应继续该序列。 B列中的数字是手动输入的。

现在我正在使用一个公式(在这个例子中,公式在A2中):

= IF(B2,“”,(ROW() - 1))

这适用于获取序列,如果相邻单元格包含值,则将单元格留空,但因为它基于行号,所以它不会给我我需要的内容,因为它只会给我一行1号。

我已经开始研究VBA解决方案了,到目前为止我所拥有的是:

Sub AutoNumText()
lastRw = Range("B" & Rows.Count).End(xlUp).Row
 For nxtRw = 1 To lastRw
  If Range("B" & nxtRw) <> "" Then
   myNum = myNum + 1
   Range("A" & nxtRw) = myNum
     Application.WorksheetFunction.Text(myNum)
  End If
 Next
End Sub

这也不起作用,我对接下来要尝试的东西感到有点失落。有什么建议吗?

修改

以下是数据应该是什么样子的示例:

A   B

1   
    1
2   
    2
    2
3   

3 个答案:

答案 0 :(得分:0)

这可能是你想要的:

Sub AutoNumText()
lastRw = Range("B" & Rows.Count).End(xlUp).Row
For nxtRw = 1 To lastRw
    If Range("B" & nxtRw) = "" Then
        myNum = myNum + 1
        Range("A" & nxtRw) = myNum
    End If
Next
End Sub

答案 1 :(得分:0)

A1 中输入:

=IF(B1="","",1)

A2 中输入:

=IF(B2="","",1+MAX($A$1:A1))

并复制下来:

enter image description here

答案 2 :(得分:0)

一个公式:

=IF(AND(ROW() = 1,B1=""),1,IF(B1="",MAX($A$1:INDEX($A:$A,ROW()-1))+1,""))

enter image description here