【问题标题】:If cell value in worksheet(3) matches cell value in worksheet(2) AND specified cell in worksheet(2) contains given text replace with如果工作表 (3) 中的单元格值与工作表 (2) 中的单元格值匹配并且工作表 (2) 中的指定单元格包含给定文本替换为
【发布时间】:2016-01-05 04:36:05
【问题描述】:

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

(编辑 - 评论的附加解释):我想将 Sheets(“New”)中的 D 列与 Sheets(“alljobs”)中的 A 列进行比较。如果这些匹配,我想转到 Sheets("alljobs") 的 G 列,并根据它是否包含 GTB 或 WDTC,我想将 Sheets("New") 的 B 列更改为 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

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    这样的东西应该适合你:

    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 或迪士尼 DCL

    (在您的评论中,您声明查看 wsNew 的 G 列,但我认为您的意思是说 wsAll 的 G 列,这是更新后的代码所做的。)

    【讨论】:

    • 抱歉没有运气。它运行但它没有改变任何东西
    • 我用模拟数据对其进行了测试,所以我知道它有效。如果它不适合您,那么我们拥有的信息与您的数据布局方式不匹配。您能否提供一些示例数据,以便我们了解我们正在处理的内容?
    • 将图片上传到图片存储网站(如 flickr 或 imgur),然后获取图片的链接并将它们放入原始问题中。
    • @ichoi 好吧,根据提供的屏幕截图,您似乎想比较 wsNew 列 B 和 wsAll C 列。这是我能在两个工作表之间找到的唯一匹配项(两者的客户都是迪士尼Orlando. Job Number、AWB 和 Master 在提供的屏幕截图中均不匹配)。如果是这种情况,请查看编辑后的答案。
    • @ichoi 我已根据您的评论更新了答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-30
    • 1970-01-01
    相关资源
    最近更新 更多