renliting 发表于 2012-10-26 22:27 
没有什么标准,前提就是有2500家公司的数据,然后知道要从中查找的1000家公司的名称及股票代码,需要从25 ...
假设:2500公司数据在FullList表格内,第1列必须是股票代码,以后33列是公司名和32个数据。找到的1000公司数据将输出到Result表格,第1列是股票代码,以后33列是从FullList表格内提取的找到的公司名、32个数据。如果未找到,第1列显示股票代码,第2列显示未找到的出错信息。寻找这1000公司是根据Codes表格(第1列)的股票代码(文本格式)来找。那么,VBA程序如下(试运行似乎没问题,请指正):
Public Sub FindCoInf()
Dim i As Long, FullListRowNo As Long, NumOfCo As Long
Dim TargetRowNo As Long, NumOfTargetCo As Long, NumOfDataForEachCo As Long
Dim FullListSh As String, ResultSh As String, TargetCodeSh As String, TargetCode As String
Dim CoFound As Boolean
FullListSh = "FullList": ResultSh = "Result": TargetCodeSh = "Codes"
NumOfDataForEachCo = 32 + 2
'you mention it is 32, however, there are two more, i.e. company code, and company name, so 34
NumOfCo = 2500 'you mention that is 2500
NumOfTargetCo = 1000 'you mention that is 1000
For TargetRowNo = 1 To NumOfTargetCo
TargetCode = CStr(Sheets(TargetCodeSh).Cells(TargetRowNo + 1, 1).Value)
CoFound = False
FullListRowNo = 1
Do While FullListRowNo <= NumOfCo And (Not CoFound)
If CStr(Sheets(FullListSh).Cells(FullListRowNo + 1, 1).Value) = TargetCode Then
CoFound = True
Else
FullListRowNo = FullListRowNo + 1
End If
Loop
If CoFound Then
For i = 1 To NumOfDataForEachCo
Sheets(ResultSh).Cells(TargetRowNo + 1, i).Value = Sheets(FullListSh).Cells(FullListRowNo + 1, i).Value
Next i
Else
Sheets(ResultSh).Cells(TargetRowNo + 1, 1).Value = TargetCode
Sheets(ResultSh).Cells(TargetRowNo + 1, 2).Value = "ERROR: Code not found in the full list!"
End If
Next TargetRowNo
End Sub