【发布时间】:2015-06-19 07:01:42
【问题描述】:
我有一个代码可以在整个工作簿中搜索单个值。我遇到的问题是我需要输入我正在单独搜索的所有代码,但代码选择已经包含在工作簿内工作表的单个列中。基本上我希望搜索做的是查看此列中的值并将它们用作整个工作簿中的数组。
我的总代码如下所示
Sub FMES()
Dim Headers() As String: Headers = Split("FMES CODE,Part No,Part Name,FM ID,Failure Mode & Cause,FMCN,PTR,ETR", ",")
Worksheets.Add().Name = "FMES"
Dim wsFMES As Worksheet: Set wsFMES = Sheets("FMES")
wsFMES.Move after:=Worksheets(Worksheets.Count)
wsFMES.Cells.Clear
Application.ScreenUpdating = False
With wsFMES
For i = 0 To UBound(Headers)
.Cells(2, i + 2) = Headers(i)
.Columns(i + 2).EntireColumn.AutoFit
Next i
.Cells(1, 2) = "FMES TABLE"
.Range(.Cells(1, 2), .Cells(1, UBound(Headers) + 2)).MergeCells = True
.Range(.Cells(1, 2), .Cells(1, UBound(Headers) + 2)).HorizontalAlignment = xlCenter
.Range(.Cells(1, 2), .Cells(2, UBound(Headers) + 2)).Font.Bold = True
End With
Dim SourceCell As Range, FirstAdr As String
Dim RowCounter As Long: RowCounter = 3
Dim SearchTarget() As String
SearchTarget = Split("TM-CRIT-PART,TM-U-IFSD-HPT,TM-D-IFSD-HPT,TM-HPT-CBO,TM-HPT2-NGV-BURN-MIN,TM-HPT2-NGV-MAJ,TM-HPT-INTGRTY-LOSS,OIL-FZ2-MINOR LEAK,OIL-FZ2-MAJOR LEAK,FIRE-OIL-ZN2", ",")
For i = 0 To UBound(SearchTarget)
If Worksheets.Count > 1 Then
For j = 1 To Worksheets.Count - 1
With Sheets(j)
Set SourceCell = .Columns(8).Find(SearchTarget(i), LookAt:=xlPart, LookIn:=xlValues)
If Not SourceCell Is Nothing Then
FirstAdr = SourceCell.Address
Do
wsFMES.Cells(RowCounter, 2).Value = SearchTarget(i)
wsFMES.Cells(RowCounter, 3).Value = .Cells(3, 10)
wsFMES.Cells(RowCounter, 4).Value = .Cells(2, 10)
wsFMES.Cells(RowCounter, 5).Value = .Cells(SourceCell.Row, 2).Value
For k = 0 To SourceCell.Row - 1
If .Cells(SourceCell.Row - k, 3).Value <> "continued." Then
wsFMES.Cells(RowCounter, 6).Value = .Cells(SourceCell.Row - k, 3).Value
Exit For
End If
Next k
wsFMES.Cells(RowCounter, 7).Value = .Cells(SourceCell.Row, 14).Value
Set SourceCell = .Columns(8).FindNext(SourceCell)
RowCounter = RowCounter + 1
Loop While Not SourceCell Is Nothing And SourceCell.Address <> FirstAdr
End If
End With
Next j
End If
Next i
End Sub
定义我的搜索条件的部分是
Dim SearchTarget() As String
SearchTarget = Split("TM-CRIT-PART,TM-U-IFSD-HPT,TM-D-IFSD-HPT,TM-HPT-CBO,TM-HPT2-NGV-BURN-MIN,TM-HPT2-NGV-MAJ,TM-HPT-INTGRTY-LOSS,OIL-FZ2-MINOR LEAK,OIL-FZ2-MAJOR LEAK,FIRE-OIL-ZN2", ",")
For i = 0 To UBound(SearchTarget)
If Worksheets.Count > 1 Then
For j = 1 To Worksheets.Count - 1
With Sheets(j)
Set SourceCell = .Columns(8).Find(SearchTarget(i),
它正在搜索的代码是 TM-CRIT-PART...等等,我的问题是这些代码有数百个,它们都包含在单元格 A4 和 A397 之间名为 FMES 代码的工作表中。有没有办法可以将这个单元格范围中的值定义为我的搜索条件?
【问题讨论】: