我遇到的问题是,如果订单号(A 列)的值超过 4 个,我只想查看订单号。当它们有 4 个值时,我只想查看该订单中的最后 4 个值。在 DI 列中写入 1 和 0 以与我可以过滤的内容相对应。
但我不知道如何在 Excel 中编写公式来从 B 列执行此操作。
答案1
在 VBA 上插入一个模块,并在模块上插入以下代码:
Function OverFour(Target As Range, top_value As Integer) As Integer
thisrow = Target.Row 'row of the order cell
thiscolumn = Target.Column 'column of the order cell
thisvalue = Target.value 'value of the order cell
thisorder = Cells(thisrow, thiscolumn)
notSame = True
newrow = thisrow
finalvalue = 0
'the following part checks how many rows are on the block of repeated values
While notSame = True
newrow = newrow + 1
k = Cells(newrow, thiscolumn)
j = Cells(newrow, thiscolumn - 1)
If k = 1 Or k = "" Then
newrow = newrow - 1
notSame = False
End If
Wend
'if the number of rows is larger than top_value
'and this cell is in the range from top_value to the end of the block
'then output an 1
If Cells(newrow, thiscolumn) >= top_value Then
If newrow - thisrow <= top_value - 1 Then
finalvalue = 1
End If
End If
OverFour = finalvalue
End Function
现在,在单元格 D2 中插入:
=OverFour(B2,4)
并将其复制(向下拖动)至 D 列的其他单元格。
该函数使用两个引用:
B2
在这种情况下,订单的单元格。- 所需最高价值,
4
在此示例中。
它的好处是,如果您决定标记前 2、3、4、5 名或任何您想要的,它就可以起作用。