[Okta Webinar] Learn how to a build a cloud-first strategyRegister Now

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 93
  • Last Modified:

Loop Synchronization

I have a workbook with 2 worksheets in it.
"MC Tracker Data" & "Tracking"

The control worksheet is "MC Tracker Data"

The "Tracking" worksheet gets deleted and replaced daily.

The key field for Sync is Column C in both worksheets. The columns stay static, but rows may be deleted or added.

"MC Tracker Data" row 3 has the corresponding column numbers from "Tracking" where the data is to be updated from.

"Tracking" columns "Y" to "AG" is the tough one. The #/# must be split to the corresponding columns in "MC Tracker Data" The snippets of code to break them is in Module 1.

I need to look up the key field in "MC Tracker Data"
Find the corresponding key field (Row) in "Tracking"
Update all columns associated by the mapping
Split the text in cells "Y to AG" and populate the columns in "MC Tracker Data"

I am terrible with loops, so help would be appreciated.....
Example-Code.xlsm
0
DougDodge
Asked:
DougDodge
  • 8
  • 7
1 Solution
 
KimputerCommented:
Does it have to be VBA though?
If on the MC Tracker Data sheet, cell G6 has this formula
=VLOOKUP(C6,Tracking!C:AG,23)

Open in new window

That's already the info you need? cell G7, has the same formula but ends with 24, etc etc
After you have the row then, copy formula down

If you have a really good reason to use VBA though, I will take a look at if after you respond.
0
 
DougDodgeAuthor Commented:
The worksheet "Tracking" gets deleted and replaced all the time, the quantity of rows changes all the time. Formulas do this...... REF! .......all the time......
0
 
KimputerCommented:
Ref! will not happen if you change the formula to:

=IF(ISNA(VLOOKUP($C6,Tracking!$C:$AG,23)),"",VLOOKUP($C6,Tracking!$C:$AG,23))

(of course, again, make sure the next cell is 24. 25 etc, and then copy down.
0
Concerto's Cloud Advisory Services

Want to avoid the missteps to gaining all the benefits of the cloud? Learn more about the different assessment options from our Cloud Advisory team.

 
DougDodgeAuthor Commented:
There is way more to the issue than just this update. VBA is the only way to handle it all.
0
 
KimputerCommented:
Okay try this code:

Option Explicit

Sub TrackingToTracker()

Application.ScreenUpdating = False

Dim c
Dim i, j As Integer
Dim LastRow As Integer

LastRow = Sheets("MC Tracker Data").Cells(Rows.Count, 1).End(xlUp).row

For i = LastRow To 6 Step -1

    With Sheets("Tracking").Range("A1:AO9999")
        Set c = .Find(Sheets("MC Tracker Data").Cells(i, 3).Value, LookIn:=xlValues)
        If Not c Is Nothing Then
            'MsgBox c.row
            For j = 0 To 8 Step 1
                'left
                Sheets("MC Tracker Data").Cells(i, 35 + (j * 3)).Value = Split(Sheets("Tracking").Cells(c.row, 25 + j).Value, "/")(0)
                'right
                Sheets("MC Tracker Data").Cells(i, 35 + (j * 3) + 2).Value = Split(Sheets("Tracking").Cells(c.row, 25 + j).Value, "/")(1)
            Next
        End If
    End With

Next

Application.ScreenUpdating = True

End Sub

Open in new window

0
 
DougDodgeAuthor Commented:
That part seems to work, but all the additional fields are missed.
"MC Tracker Data" Row 3 shows the mapping of the columns from "Tracking" that needs to be completed as well.
0
 
KimputerCommented:
Updated:

Option Explicit

Sub TrackingToTracker()

Application.ScreenUpdating = False

Dim c
Dim i, j As Integer
Dim LastRow As Integer

LastRow = Sheets("MC Tracker Data").Cells(Rows.Count, 1).End(xlUp).row

For i = LastRow To 6 Step -1

    With Sheets("Tracking").Range("A1:AO9999")
        Set c = .Find(Sheets("MC Tracker Data").Cells(i, 3).Value, LookIn:=xlValues)
        If Not c Is Nothing Then
            For j = 1 To 5 Step 1
                Sheets("MC Tracker Data").Cells(i, j).Value = Sheets("Tracking").Cells(c.row, j).Value
            Next
            Sheets("MC Tracker Data").Range("P" & i).Value = Sheets("Tracking").Range("F" & c.row).Value
            Sheets("MC Tracker Data").Range("Q" & i).Value = Sheets("Tracking").Range("G" & c.row).Value
            Sheets("MC Tracker Data").Range("Y" & i).Value = Sheets("Tracking").Range("O" & c.row).Value
            Sheets("MC Tracker Data").Range("Z" & i).Value = Sheets("Tracking").Range("P" & c.row).Value
            Sheets("MC Tracker Data").Range("AA" & i).Value = Sheets("Tracking").Range("Q" & c.row).Value
            Sheets("MC Tracker Data").Range("AB" & i).Value = Sheets("Tracking").Range("R" & c.row).Value
            Sheets("MC Tracker Data").Range("AC" & i).Value = Sheets("Tracking").Range("S" & c.row).Value
            Sheets("MC Tracker Data").Range("AD" & i).Value = Sheets("Tracking").Range("T" & c.row).Value
            Sheets("MC Tracker Data").Range("AE" & i).Value = Sheets("Tracking").Range("U" & c.row).Value
            Sheets("MC Tracker Data").Range("AF" & i).Value = Sheets("Tracking").Range("V" & c.row).Value
            Sheets("MC Tracker Data").Range("AG" & i).Value = Sheets("Tracking").Range("W" & c.row).Value
            Sheets("MC Tracker Data").Range("AH" & i).Value = Sheets("Tracking").Range("X" & c.row).Value
            
            Sheets("MC Tracker Data").Range("BJ" & i).Value = Sheets("Tracking").Range("AH" & c.row).Value
            Sheets("MC Tracker Data").Range("BM" & i).Value = Sheets("Tracking").Range("AI" & c.row).Value
            Sheets("MC Tracker Data").Range("BN" & i).Value = Sheets("Tracking").Range("AJ" & c.row).Value
            Sheets("MC Tracker Data").Range("BO" & i).Value = Sheets("Tracking").Range("AK" & c.row).Value
            Sheets("MC Tracker Data").Range("BP" & i).Value = Sheets("Tracking").Range("AL" & c.row).Value
            Sheets("MC Tracker Data").Range("BQ" & i).Value = Sheets("Tracking").Range("AM" & c.row).Value
            Sheets("MC Tracker Data").Range("BR" & i).Value = Sheets("Tracking").Range("AN" & c.row).Value
           
            
            For j = 0 To 8 Step 1
                'left
                Sheets("MC Tracker Data").Cells(i, 35 + (j * 3)).Value = Split(Sheets("Tracking").Cells(c.row, 25 + j).Value, "/")(0)
                'right
                Sheets("MC Tracker Data").Cells(i, 35 + (j * 3) + 2).Value = Split(Sheets("Tracking").Cells(c.row, 25 + j).Value, "/")(1)
            Next
            
        End If
    End With

Next

Application.ScreenUpdating = True

End Sub

Open in new window


Lines could be shorter, but readability would suffer (also for tracking column matching errors)
0
 
DougDodgeAuthor Commented:
Interesting......

Using the code you provided it does nothing at all......
0
 
KimputerCommented:
Did you delete all code and copy & pasted it again?
I compared previous code with current code (to make sure no typing errors were introduced), and it's basically the same, with extra copy code.
I tried it again with the file and latest code. All columns are filled with supposed data.
Please note it won't display anything directly, have some patience.
0
 
DougDodgeAuthor Commented:
I fixed it......

I had to change line:

LastRow = Sheets("MC Tracker Data").Cells(Rows.Count, 1).End(xlUp).row
to
LastRow = Sheets("MC Tracker Data").Cells(Rows.Count, 3).End(xlUp).row

Thanks
0
 
DougDodgeAuthor Commented:
I've requested that this question be closed as follows:

Accepted answer: 0 points for DougDodge's comment #a40564398

for the following reason:

Works like a charm now.....
Thank you....
0
 
KimputerCommented:
Okay, but usually when you're satisfied with the answer, you award the expert points :(
0
 
KimputerCommented:
Okay, but usually when you're satisfied with the answer, you award the expert points :(
0
 
DougDodgeAuthor Commented:
I've requested that this question be closed as follows:

Accepted answer: 0 points for DougDodge's comment #a40564431

for the following reason:

Sorry, the system did not pick up the grading when I closed it.....
0
 
DougDodgeAuthor Commented:
I have graded this "A" twice now.....
0

Featured Post

Upgrade your Question Security!

Add Premium security features to your question to ensure its privacy or anonymity. Learn more about your ability to control Question Security today.

  • 8
  • 7
Tackle projects and never again get stuck behind a technical roadblock.
Join Now