我在Excel中有一些数据,我必须在列中找到最大数字,以便我可以将其递增1。这些数字与001一样是文本。我还需要考虑三个参考列来识别最大数量。
以下是数据的示例
A K L N <-These are the columns
Ref1 Ref2 Ref3 ID <-These are the headers
xxx I 17 001 <-Column N is also text
xxx I 17 002
yyy J 15 001
xxx I 17 005 <-The numbers might not be consecutive. Instead of 003 jumps to 005
根据参考XXX-I-17,我必须发现下一个ID是006.请注意,如上所示,参考并不总是连续的。
我正在做的是首先过滤数据,如:
LastRow = ActiveSheet.Range("A1").Offset(ActiveSheet.Rows.Count - 1, 0).End(xlUp).Row
ActiveSheet.Range("A1:L" & lastRow).AutoFilter Field:=1, Criteria1:="xxx"
ActiveSheet.Range("A1:L" & lastRow).AutoFilter Field:=11, Criteria1:="I"
ActiveSheet.Range("A1:L" & lastRow).AutoFilter Field:=11, Criteria1:="17"
我不确定过滤数据是否是最佳方法,但无法弄清楚的是如何在N列中找到最大值以便我可以增加它。
有什么想法吗?公式会更好吗?
答案 0 :(得分:1)
在VBA中,您可以这样做:
Function NextN(a As String, k As String, l As Long) As Long
NextN = 1 + Application.Evaluate("MAX(IF((A:A=""" & a & """)*(K:K=""" & k & """)*(L:L=" & l & "),INT(N:N)))")
End Function
您也可以在进行一些语法调整后直接在excel中使用该公式,并将其用作数组公式(CSE)。否则,您也可以将此功能用作用户定义的功能。
您还可以通过将列限制为某个大小(即A1:A1000
而不是A:A
等来加快速度。)
Sub ExampleTest()
dim n as long
n = NextN("XXX", "I", 17)
Debug.Print n ' Should print 6 with your OP's data
End Sub
答案 1 :(得分:0)
感谢Scott的评论,我找到了我想要的东西。如果它帮助其他人,使用以下公式我可以找到下一个增量文本值
=TEXT(COUNTIFS($A$1:A2,A2,$K$1:K2,K2,$L$1:L2,L2)+1,"000")