2017-01-20 5 views
-3

Привета Я ищу коду VBA для поиска несколько данных в пределах одного листа затем заполнить информацию о корреспонденции на новый лист, вот пример:нужен код VBA для поиска несколько данных в одном листе

В техпаспорте у меня есть

Customer Number Customer Name Invoice Date Invoice Amount 
1    ABC   4/17/2012  $5,000.00 
2    FGI   4/18/2012  $4,560.00 
3    NEC   4/19/2012  $687.00 
4    IEO   4/20/2012  $158.00 
5    PWO   4/21/2012  $1,549.00 
4    IEO   4/22/2012  $3,247.00 
1    ABC   4/23/2012  $1,590.00 
2    FGI   4/24/2012  $165.00 
3    NEC   4/25/2012  $158.00 
6    VCW   4/26/2012  $3,777.00 

при поиске имен клиентов:

ABC 
FGI 
NEC 
IEO 
PWO 

он покажет результат в новом листе, как:

Customer Number Customer Name Invoice Date Invoice Amount 
1    ABC   4/17/2012  $5,000.00 
1    ABC   4/23/2012  $1,590.00 
2    FGI   4/18/2012  $4,560.00 
2    FGI   4/24/2012  $165.00 
3    NEC   4/19/2012  $687.00 
3    NEC   4/25/2012  $158.00 
4    IEO   4/20/2012  $158.00 
4    IEO   4/22/2012  $3,247.00 
5    PWO   4/21/2012  $1,549.00 
+1

Добро пожаловать [так]. Пожалуйста, найдите минутку, чтобы прочитать [ask] и [mcve] - SO не является «пожалуйста, напишите код для меня», где вы даете спецификации, и люди дают вам бесплатный код. Давай, попробуй. Когда они ломаются, и вы застряли в * конкретной проблеме, вы найдете SO в своих исследованиях - и если вы этого не сделаете, у вас будет хороший вопрос, чтобы задать вопрос =) –

ответ

1

Data Sheet

Search Result Sheet

Имя один лист данных и другой результат листа поиска. Обратите внимание на столбец поиска.

Sub Поиск()

Dim i, j, newsheet_rownum 
newsheet_rownum = 2 
Sheets("Search Result").Range("A2:D65536").ClearContents 

For i = 2 To 65536 
    If Len(Cells(i, 6)) = 0 Then 
     Exit For 
    End If 

    For j = 2 To 65536 

     If (Cells(i, 6) = Cells(j, 2)) Then 
      Sheets("Search Result").Cells(newsheet_rownum, 1) = Sheets("Data").Cells(j, 1) 
      Sheets("Search Result").Cells(newsheet_rownum, 2) = Sheets("Data").Cells(j, 2) 
      Sheets("Search Result").Cells(newsheet_rownum, 3) = Sheets("Data").Cells(j, 3) 
      Sheets("Search Result").Cells(newsheet_rownum, 4) = Sheets("Data").Cells(j, 4) 
      newsheet_rownum = newsheet_rownum + 1 
     End If 

    Next j 

Next i 
MsgBox "Job Done" 

End Sub

+0

Это работает, спасибо! – user7444508