如果工作表(3)中的单元格值与工作表(2)中的单元格值匹配,并且工作表(2)中的指定单元格包含给定的文本,则用

如果工作表3中的单元格值与工作表2中的单元格值匹配,并且工作表2中的指定单元格包含给定的文本replace…

(编辑 – 来自评论的附加说明):我想比较表格(“新”)中的列D到表格中的列A(“alljobs”)。 如果这些匹配,我想去表格G列(“alljobs”),并根据它是否包含GTB或WDTC,我想要改变表格B(“新”)来说迪斯尼WDTC或迪士尼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 

像这样的东西应该为你工作:

 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 

编辑 :基于来自OP的评论更新的代码:

我想将wsNew中的列D与wsALL中的列A进行比较。 如果这些匹配,我想去wsNew的G列 ,根据它是否包含GTB或WDTC,我想把wsNew的B列更改为迪斯尼WDTC或DIsney DCL

(在你的评论中,你说的是wsNew的G列,但是我想你应该说wsAll的G列,这是更新的代码所做的)。