2017-04-14 39 views
0

Excel VBA 我会尽我所能让这有意义。VBA为一个数组中的每个项目循环一个文件

我已经为29个项目设置了我的数组(设备ID T0001-T0028)。

基本上我有一份报告,有这些设备的维修记录。我正在尝试创建一个循环,它将遍历文件并在每次列出equid ID时查找,然后使用左/右/中间函数从文件中提取数据。但是每个装备ID会多次列出,所以他们的方式我想象这种情况是为了装备T0001程序每次都要经过整个文件查找和提取“T0001”列出,然后转到“T0002”并通过整个文件等...

我知道这将是一种循环,但我很困惑是否循环文件或循环数组。任何人都可以帮忙

Sub EquipArray() 
Dim sampleArr() As Variant 
Dim i As Integer 
Dim rng As Range, cell As Range 

i = 1 
Set rng = Range("A2:A29") 

sampleArr = rng 


End Sub 

回答

1

这是一个发现重复的循环。改变你的需求

Private Sub this() 

Dim rng As Range 
Dim rCell As Range 
Dim this As String 
Dim arr(9) 

Set rng = ThisWorkbook.Sheets("Sheet1").Range("a1:a10") 

For Each rCell In rng.Cells 
    this = rCell.Value 
    For x = LBound(arr, 1) To UBound(arr, 1) 
     If this = arr(x) Then 
      rCell.Interior.ColorIndex = 7 
      Exit For 
     ElseIf this <> arr(x) And arr(x) = vbNullString Then 
      arr(x) = this 
      Exit For 
     End If 
    Next x 
Next rCell 

End Sub 
+0

谢谢我现在就试试 –

0

如果我的理解是正确的,它会使没有什么区别,因为你必须循环吧[文件数] * [项目数量(或[件数] * [文件数],这是相同的)。 难道你不能使用公式来事先分类每个文件,所以你不必对每个项目进行测试?

+0

我不允许上传图片(这可能会让事情变得更容易解释),但它是一个会列出装备ID多次的文件。我试图从报告中编写额外数据的代码,但基本上我需要装备ID作为“钥匙”,因为缺少更好的单词。代码将找到id号,然后从该行中提取数据并再次转到下一行寻找ID#。在文件末尾,我需要重新开始下一个ID#。 –

相关问题