跳过某些单元格时的增量编号

Incremental Numbering while skipping over certain cells

我正在尝试在 Excel 中进行增量编号,但要针对特定​​条件。如果条件不匹配,那么它应该保留现有的单元格详细信息。

图片:

正如您从图片中看到的,我想在 B 列中创建一个编号列表,它基于 D 列中相应行中显示的信息。所以在第二行,我将开始计数为“1”,然后仅随着 "is_null" 和 "equal" 的计数增长而继续扩展。同时,我希望它跳过绿色和蓝色单元格并保持内容不变。

截至目前,我已经完成了以下公式: =COUNTIF($D:D2,"is_null")+COUNTIF($D:D2,"equals")

这会进行正确的编号,但是它 over-writes 绿色和蓝色单元格,而不是将它们分别保持为 "A" 和 "stop"。

如果有人能帮我解决这个问题,那我就可以走了。谢谢!

如果在 D 列中找到字符串 "set_path" 或 "stop",我不确定该值应该是什么,但如果它们始终相同(即 "a" 如果Column D = "set_path" and "stop" if Column D = "stop"), 你可以用下面的公式得到你想要的结果:

=IF(AND(D2<>"set_path",D2<>"stop"),COUNTIF($D:D2,"is_null")+COUNTIF($D:D2,"equals"),IF(D2="set_path","a",IF(D2="stop","stop","")))

更新:

使用 VBA 您可以保留单元格的内容,而不用使用以下代码的公式覆盖它们:

Sub foo()
Dim ws As Worksheet: Set ws = Sheets("Sheet1")
'declare and set the worksheet you are working with, amend as required.
Dim LastRow As Long, i As Long

LastRow = ws.Cells(ws.Rows.Count, "D").End(xlUp).Row
'get the last row with data on Column D

For i = 2 To LastRow
    If ws.Cells(i, "B").Value = "" Then 'if cell is empty add formula
        ws.Cells(i, "B").FormulaR1C1 = "=COUNTIF(R1C4:RC[2],""is_null"")+COUNTIF(R1C4:RC[2],""equals"")"
    End If
Next i

End Sub

第二次更新:

我现在修改了公式,如果在 D 列中找到 "set_path",则字母递增 1(请记住,这将从 A-Z 开始,然后它将开始按照ASCII table,所以如果你想要其他行为,你可能需要修改它):

=IF(AND(D2<>"set_path",D2<>"stop"),COUNTIF($D:D2,"is_null")+COUNTIF($D:D2,"equals"),IF(D2="set_path",IFERROR(CHAR(COUNTIF($D:D2,"set_path")+64),""),IF(D2="stop","stop","")))