Excel 不生成以特定值开头的ID

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

我有一个链接,它通过查看其中一张表的最后一行并向其中添加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 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?这是同样的问题,我只是想知道这是否可行?