2015-12-30 3 views
0

Если значение ячейки на листе 3 соответствует значению ячейки на листе 2 И указанной ячейке на листе 2 содержит приведенный текст заменить на ...Если значение ячейки на листе (3) соответствует значению ячейки на листе (2) И указанная ячейка на листе (2) содержит заданный текст, замените на

(EDIT - дополнительное объяснение из комментария): Я хочу сравнить столбцы D в листах («новый») с колонкой A в листах («alljobs»). Если это совпадение, я хочу перейти в столбец G листов («alljobs») и в зависимости от того, содержит ли он GTB или WDTC, я хочу изменить колонку B листов («New»), чтобы сказать Disney WDTC или Disney DCL.

Любая идея, почему она работает, но ничего не делает?

Sub changedisney() 

Application.ScreenUpdating = False 
Application.Calculation = xlCalculationManual 
Dim wb As Workbook 
Dim ws As Worksheet 
Dim lookupvalue As Variant 

Set wb = ActiveWorkbook 
Set ws1 = wb.Sheets("April") 
Set ws2 = wb.Sheets("alljobs") 
Set ws3 = wb.Sheets("New") 

y = ws3.Cells(ws3.Rows.Count, 2).End(xlUp).Row 
    For i = y To 2 Step -1 
     lookupvalue = ws3.Cells(i, 4) 
     For x = ws2.Cells(Rows.Count, 4).End(xlUp).Row To Step - 1 
      Set rng = ws2.Cells(x, 4) 
      If rng = lookupvalue And ws2.Cells(x, 7) Like "wdtc*" Then 
       ws3.Cells(x, 2) = "Disney WDTC" 
      End If 
     Next x 
    Next i 


Application.ScreenUpdating = True 
Application.Calculation = xlCalculationAutomatic 
End Sub 

ответ

3

Что-то, как это должно работать для вас:

Sub changedisney() 

    Dim wb As Workbook 
    Dim wsAll As Worksheet 
    Dim wsNew As Worksheet 
    Dim DCell As Range 
    Dim rFound As Range 

    Set wb = ActiveWorkbook 
    Set wsAll = wb.Sheets("alljobs") 
    Set wsNew = wb.Sheets("New") 

    For Each DCell In wsNew.Range("D2", wsNew.Cells(Rows.Count, "D").End(xlUp)).Cells 
     Set rFound = wsAll.Columns("A").Find(DCell.Value, , xlValues, xlWhole) 
     If Not rFound Is Nothing Then 
      Select Case LCase(Left(wsAll.Cells(rFound.Row, "G").Text, 3)) 
       Case "wdt": wsNew.Cells(DCell.Row, "B").Value = "Disney WDTC" 
       Case "gtb": wsNew.Cells(DCell.Row, "B").Value = "Disney DCL" 
      End Select 
     End If 
    Next DCell 

End Sub 

EDIT: Изменены кодами, основанных на комментарии от OP:

Я хочу сравнить столбец D в wsNew к колонку A в wsALL. Если эти матч я хочу пойти в колонке G из wsNew и в зависимости от того, содержит ли это GTB или WDTC, я хочу, чтобы изменить столбец B в wsNew к упомянутому Дисней WDTC или DISNEY DCL

(В ваш комментарий, вы заявляете, что смотрите столбец G wsNew, но я думаю, вы хотели сказать столбец G of wsAll, что и делает обновленный код.)

+0

извините, не повезло. он работает, но он ничего не меняет – ichoi

+1

Я тестировал его с макетными данными, поэтому я знаю, что он работает. Если это не работает для вас, то информация, которую мы имеем, не соответствует тому, как выкладываются ваши данные. Можете ли вы предоставить некоторые примеры данных, чтобы мы знали, с чем мы работаем? – tigeravatar

+0

Я мог бы сделать несколько скриншотов, как я могу отправить его по-своему? – ichoi

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