2013-08-19 3 views
0

Je suis coincé avec une erreur de code simple 1004, ou Sub non défini en fonction du code que j'utilise. J'ai besoin d'aide pour comparer les nombres de deux feuilles différentes, puis pour remplacer une valeur dans l'une des lignes. (EX sheet1 "A1" = 809565 matchs Feuille2 "A28" = 809565, puis je dois changer la chaîne actuelle "au-dessus au sol (I)"..)Comment trouver une valeur dans une colonne et remplacer la valeur dans une colonne différente

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 

Code 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_# = "" 

boucle jusqu'à Search_ # = ""

+0

Utilisez-vous x vers le haut ou vers le haut? – pnuts

+0

1, mais j'ai décidé de définir une plage fixe puisque je connais la taille des feuilles. – user2569708

Répondre

0

Je pense que c'est ce que vous cherchez:

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 
Questions connexes