find名为CSn的总张数

通常,空白评估工作簿包含在数据input表格CS1(总是存在)之前的9张,CS数量(其中x可以是50,100,200等)以及最后一张CS页张之后的零张。 有时用户将在最后一张工作表前后添加工作表,但不允许在第一张和最后一张工作表之间添加工作表。

要求是改进现有的VLOOKUP代码(当前查看工作簿中的每张工作表),只查看所有的CS工作表。 因此,需要查找多less名为“CSn”(其中n是从1到未知的整数)工作表在工作簿中。 如果CS工作表在工作簿的末尾,这很容易,但如果用户在最后一个CS工作表之后添加其他工作表,则不那么容易。

我不知道如何确定最后的CS表索引作为CS表的数量变化。

快速代码显示CS页数

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 

循环浏览每张表格,并testingCS和另一个数字的名称。 然后把这个string转换成一个整数,并存储它,如果它是更大的,所以你得到你的最大值。 testing工作:

 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 

这个简短的用户定义function (或UDF )将返回以字母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()