Excel 不生成以特定值开头的ID
我有一个链接,它通过查看其中一张表的最后一行并向其中添加1来生成ID。这些ID不能是某些特定的数字。 对于这一点,我有两个功能,它们工作正常,并按照我的预期执行,但现在我有了一些新的标准。我想告诉我的函数“不要生成以3、4、8开头的ID”,而不是我生成的ID不能是的一些随机ID,我该怎么做 我不太擅长vba,我可能需要很多解释Excel 不生成以特定值开头的ID,excel,vba,Excel,Vba,我有一个链接,它通过查看其中一张表的最后一行并向其中添加1来生成ID。这些ID不能是某些特定的数字。 对于这一点,我有两个功能,它们工作正常,并按照我的预期执行,但现在我有了一些新的标准。我想告诉我的函数“不要生成以3、4、8开头的ID”,而不是我生成的ID不能是的一些随机ID,我该怎么做 我不太擅长vba,我可能需要很多解释 Function f1(search_value As Long, rng As Range) For i = 1 To rng.Count If
Function f1(search_value As Long, rng As Range)
For i = 1 To rng.Count
If rng.Cells(i, 1).Value = search_value Then
f1 = True
Exit Function
End If
Next i
f1= False
End Function
Function f2(last_ID As Long, rng As Range)
Dim newID As Long
newID = last_ID + 1
While f1(newID, rng)
newID = newID + 1
Wend
f2 = newID
End Function
你可以这样做
Function f1(search_value As Long, rng As Range)
For i = 1 To rng.Count
If rng.Cells(i, 1).value = search_value Then
f1 = True
Exit Function
End If
Next i
f1 = False
End Function
Function genID(last_ID As Long, rng As Range)
Dim newID As Long
If Not Left(Len(last_ID + 1), 1) = 3 Or Left(Len(last_ID + 1), 1) = 4 Or Left(Len(last_ID + 1), 1) = 8 Then
newID = last_ID + 1
End If
While f1(newID, rng)
newID = newID + 1
Wend
f2 = newID
End Function
你可以这样做
Function f1(search_value As Long, rng As Range)
For i = 1 To rng.Count
If rng.Cells(i, 1).value = search_value Then
f1 = True
Exit Function
End If
Next i
f1 = False
End Function
Function genID(last_ID As Long, rng As Range)
Dim newID As Long
If Not Left(Len(last_ID + 1), 1) = 3 Or Left(Len(last_ID + 1), 1) = 4 Or Left(Len(last_ID + 1), 1) = 8 Then
newID = last_ID + 1
End If
While f1(newID, rng)
newID = newID + 1
Wend
f2 = newID
End Function
检查左函数。@SJR有你问题的答案。关于如何处理这些信息,您需要在
f2
函数中构建逻辑,以了解当您的最后一个_ID+1是带有if语句或开关的不需要的场景之一时会发生什么。@QuickSilver Hi,谢谢您的回答。这是行不通的。它没有给我任何错误,只是它不工作。我的意思是,如果最后一个ID是3012,那么尽管我写的ID不应该以3开头,但它会生成3013作为下一个ID。有什么想法吗?在另一个层面上,是否可以告诉此函数生成的ID不是3000到4000 8000到9000之间的ID?这是同一个问题,我只是想知道这是否可行?检查左函数。@SJR有你问题的答案。关于如何处理这些信息,您需要在f2
函数中构建逻辑,以了解当您的最后一个_ID+1是带有if语句或开关的不需要的场景之一时会发生什么。@QuickSilver Hi,谢谢您的回答。这是行不通的。它没有给我任何错误,只是它不工作。我的意思是,如果最后一个ID是3012,那么尽管我写的ID不应该以3开头,但它会生成3013作为下一个ID。有什么想法吗?在另一个层面上,是否可以告诉此函数生成的ID不是3000到4000 8000到9000之间的ID?这是同样的问题,我只是想知道这是否可行?