将单元格值添加到1-D数组,搜索多个唯一值

时间:2015-11-27 19:22:46

标签: excel vba excel-vba

首先:我正在尝试创建一个搜索按钮,如果它找到控件值与该特定列中的值之间的匹配,则会将ID(“bearpass”)数字添加到一维数组中。此搜索可能涉及多个列中的多个条件(我有一个用于Bearpass Number,First Name和Last Name),并且这些值中的任何一个都是可搜索的。由于数组为它找到的每个命中添加了Bearpass数,因此该数组中可以有多个相同的ID号。我想知道如何添加到数组。我发现我可能需要try! myplayer = AVAudioPlayer(contentsOfURL: NSURL(fileURLWithPath: filepath)) 才能将值保留在我的数组中,同时添加到最后。这是我的数组声明:

Redim Preserve

这是我的控制搜索代码:

Dim matchBearpassNumberArray() As Integer
'redim the array with a value to avoid error from Ubound
' dealing with an un-dimensioned array
ReDim matchBearpassNumberArray(1 To 1) As Integer

此外,如果If ctrl.Name = "FirstNameTextBox" Then 'If there is at least one match, increment the total number of search criteria found If WorksheetFunction.CountIf(Sheet1.Range("B:B"), Me.FirstNameTextBox.Value) > 0 Then 'B column contains names criteriaNumberMatches = criteriaNumberMatches + 1 'Begin search loop for FirstName uding DoEvents loop rowNumber = 0 Do DoEvents 'increment row number to check next row rowNumber = rowNumber + 1 '1d. look through Bearpass column in that spot itemInReview = Sheets("Students").Range("B" & rowNumber) 'IF it matches, add the BPN of the match to the array. If itemInReview Like ctrl.Value Then 'add the value in matchBearpassNumberArray(UBound(matchBearpassNumberArray)) = Sheets("Students).Range("A" & rowNumber) 'A column contains the bearpass number for that value 'adjust the size of the array ReDim Preserve matchBearpassNumberArray(1 To (UBound(matchBearpassNumberArray) + 1)) As Integer End If 'go back up to DoEvents/ end DoEvents loop for FirstName Loop Until itemInReview = "" Or IsNull(itemInReview) Else: MsgBox "We didn't find any result for the First Name supplied." End If End If 能够正常工作并添加所需的所有值,我还有另一个难题:我需要能够搜索这个数组并查找所有实例中的Bearpass数与有matchBearpassNumberArray。由于我的搜索块(如上面的那个)有一个用于Bearpass Number,First Name和Last Name,并且每个块添加它找到的每个匹配的Bearpass数,如果我搜索所有匹配,我将需要能够计算每个数组中唯一的Bearpass Number,如果它们的数量与criteriaNumberMatches一样多,那么我知道我在所有类别中找到了匹配项。

1 个答案:

答案 0 :(得分:0)

更改为Collection解决了我的问题。 另外,我用ID号码填充了另一张工作表,每当他们得到一个标准点击时,我将它们旁边的单元格增加1.最后,如果一个ID号码旁边有一个单元格,带有`.value = criteriaNumberMatches'它被复制到一个集合中进行打印。 (仍然在最后一部分工作)