2013-08-19 4 views
0

Я застрял с простой ошибкой кода 1004 или Sub не определен в зависимости от используемого кода. Мне нужна помощь в сравнении чисел из двух разных листов, а затем замена значения в одном из строк. (EX sheet1 "A1" = 809565 матчи Лист2 "A28" = 809565, а затем я должен изменить текущую строку "Над землей (I)"..)Как найти значение в одном столбце и Заменить значение в другом столбце

Set dbsheet = ThisWorkbook.Sheets("Sheet1") 
Set dbsheet_1 = ThisWorkbook.Sheets("Export_For_WMIS_Recon") 

Col_Len = dbsheet.Cells(Rows.Count, 1).End(x1UP).Row 
Col_Len_1 = dbsheet_1.Cells(Rows.Count, 1).End(x1UP).Row 

For x = 1 To Col_Len 

    For i = 1 To Col_Len_1 
     Search_num = dbsheet.Cells(x, 1) 
     Comp_num = dbsheet_1.Cells(i, 1) 
     Comp_word = dbsheet_1.Cells(i, 3) 
     If Search_# = Comp_# And Comp_word = "Aboveground" Then 
      Comp_word = "ABOVE GROUND(I)" 
     End If 
    Next i 
Next x 
End Sub 

Код 2:

row_number = 0 
r_number_2 = 0 

Do 
DoEvent 
r_number_2 = r_number_2 + 1 
Search_# = ThisWorkbook.Sheets("Sheet1").Range("A" & row_number) 
Comp_# = ThisWorkbook.Sheets("Export_For_WMIS_Recon").Range("A" & row_number) 
    If Search_# = Comp_# And ThisWorkbook.Sheets("Export_For_WMIS_Recon").Range("C" & row_number) = "Aboveground" Then 
     ThisWorkbook.Sheets("Export_For_WMIS_Recon").Range("C" & row_number) = "ABOVE GROUND(I)" 
    End If 
Loop Until Comp_# = "" 

Loop До Search_ # = ""

+0

Вы используете x один или x ell вверх? – pnuts

+0

1 up, но я решил установить фиксированный диапазон, так как знаю, насколько велики листы. – user2569708

ответ

0

Я думаю, что это то, что вы ищете:

Sub tgr() 

    Dim ws1 As Worksheet 
    Dim ws2 As Worksheet 
    Dim rngFound As Range 
    Dim varFind As Variant 
    Dim strFirst As String 

    Set ws1 = ThisWorkbook.Sheets("Sheet1") 
    Set ws2 = ThisWorkbook.Sheets("Export_For_WMIS_Recon") 

    For Each varFind In ws1.Range("A1", ws1.Cells(Rows.Count, "A").End(xlUp)).Value 
     Set rngFound = ws2.Columns("A").Find(varFind, ws2.Cells(Rows.Count, "A"), xlValues, xlWhole) 
     If Not rngFound Is Nothing Then 
      strFirst = rngFound.Address 
      Do 
       If LCase(ws2.Cells(rngFound.Row, "C").Value) = "aboveground" Then 
        ws2.Cells(rngFound.Row, "C").Value = "ABOVE GROUND(I)" 
       End If 
       Set rngFound = ws2.Columns("A").Find(varFind, rngFound, xlValues, xlWhole) 
      Loop While rngFound.Address <> strFirst 
     End If 
    Next varFind 

    Set ws1 = Nothing 
    Set ws2 = Nothing 
    Set rngFound = Nothing 

End Sub 
Смежные вопросы

 Смежные вопросы