查找名为 CSn 的工作表总数

Find the total number of sheets named CSn

通常空白估算工作簿在数据输入 sheet CS1(始终存在)之前包含 9 sheets,x 个 CS sheets(其中 x 可以是 50 , 100, 200 等)和最后一个 CS sheet 之后的零 sheets。有时用户会在最后一个 CS sheet 前后添加 sheets 但不允许在第一个和最后一个 CS sheet.

之间添加 sheets

要求改进现有的 VLOOKUP 代码(目前查看工作簿中的每个 sheet)以仅查看所有 CS sheet。因此需要找到工作簿中有多少名为 "CSn"(其中 n 是从 1 到未知的整数)sheet 的人。如果 CS sheet 位于工作簿的末尾,这很容易,但如果用户在最后一个 CS sheet.

之后添加其他 sheet,则不那么容易

我不知道如何确定最后一个 CS sheet 索引,因为 CS sheet 的数量在变化。

显示 CS 数量的快速代码 sheets

Public Sub No_of_Sheets()

    intCount = ActiveWorkbook.Sheets.Count      'Find total number of workbook sheets
    intCS1_Index = Sheets("CS1").Index          'CS1 Sheet index
    intCSCount = intCount - (intCS1_Index - 1)  'Find total number of CS sheets
    nonCSSheets = intCount - intCSCount         'Find total number of Non-CS sheets

    MsgBox " CS1 Sheet Index = " & intCS1_Index
    MsgBox " CS Sheet Count = " & intCSCount
    MsgBox " Non CS Sheet Count = " & nonCSSheets

End Sub

循环遍历每个 sheet 并测试 CS 和另一个数字的名称。然后将该字符串转换为整数并存储它(如果它较大)以便获得最大值。测试工作:

Sub FindMaxCS()

    Dim ws1 As Worksheet, MaxInt As Integer

    MaxInt = 0

    For Each ws1 In ActiveWorkbook.Worksheets
        If ws1.Name Like "CS*" Then
            If MaxInt < CInt(Mid(ws1.Name, 3, 99)) Then
                MaxInt = CInt(Mid(ws1.Name, 3, 99))
            End If
        End If
    Next ws1

MsgBox MaxInt

End Sub

这个简短的用户定义函数(或UDF)将return以字母CS.

Public Function num_CSx_Sheets()
    Dim w As Long, cs As Long
    For w = 1 To Sheets.Count
        cs = cs - CBool(UCase(Left(Sheets(w).Name, 2)) = "CS")
    Next w
    num_CSx_Sheets = cs
End Function

可以用在工作表上,例如,

=num_CSx_Sheets()

... 或在 VBA 中,

Dim i as long
i = num_CSx_Sheets()