Forum Discussion

Improving's avatar
Improving
Copper Contributor
Dec 11, 2020
Solved

Col “B” values should be match with Three months

I was using this code which is matching the values of Col”B” by three months such as   Aug, Sep, Oct then give the result in sheet “Oct” Col "R" where at Col "Q" , "D" is available same for next t...
  • mtarler's avatar
    mtarler
    Dec 11, 2020

    Improving I still don't understand some of what you are doing and why so still hesitant to change too much but here is a simplified version of the macro that I believe gives correct results.  NOTE that 2 cases appear to be wrong based on your VLOOKUP but your VLOOKUP doesn't extend to the bottom on the Oct 2020 page.

    Sub Matching2()
    Dim row1, month3, month2, month1, Rating3, Rating2, Rating1, sku As String
    Dim ws As Worksheet
    Dim xa, xb, xc As Integer
    xa = 1
    xc = Worksheets("Main").Cells(1, 5)
    Sheets("Main").Range("A:A").Clear
     
    For Each ws In Worksheets
         Sheets("Main").Cells(xa, 1) = ws.Name
         xa = xa + 1
    Next ws
    Sheets("Main").Range("A2:C8").Sort Key1:=Sheets("Main").Range("B2"), Order1:=xlAscending, Header:=xlNo
    For xb = 4 To xc
    
        month3 = Worksheets("Main").Cells(xb, 3)
        month2 = Worksheets("Main").Cells(xb - 1, 3)
        month1 = Worksheets("Main").Cells(xb - 2, 3)
        
        For x = 2 To 800
            If Worksheets(month3).Cells(x, 17) = "D" Then
                sku = Worksheets(month3).Cells(x, 2).Text
                If MatchFound(month2, sku, "D") And MatchFound(month1, sku, "D") Then
                    Worksheets(month3).Cells(x, 18) = "Remove"
                Else
                End If
            Else
            End If
        Next x
    Next xb
    MsgBox ("Worksheets Updated")
    End Sub
    
    Function MatchFound(shtname, sku, val) As Boolean
       MatchFound = (Worksheets(shtname).Range("b:b").Find(What:=sku, LookIn:=xlValues).Offset(0, 15) = val)
    End Function

Resources