?
Solved

Loop Synchronization

Posted on 2015-01-21
16
Medium Priority
?
89 Views
Last Modified: 2015-01-24
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
Comment
Question by:DougDodge
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 8
  • 7
16 Comments
 
LVL 36

Expert Comment

by:Kimputer
ID: 40563835
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
 

Author Comment

by:DougDodge
ID: 40563950
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
 
LVL 36

Expert Comment

by:Kimputer
ID: 40563978
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
What does it mean to be "Always On"?

Is your cloud always on? With an Always On cloud you won't have to worry about downtime for maintenance or software application code updates, ensuring that your bottom line isn't affected.

 

Author Comment

by:DougDodge
ID: 40564073
There is way more to the issue than just this update. VBA is the only way to handle it all.
0
 
LVL 36

Expert Comment

by:Kimputer
ID: 40564106
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
 

Author Comment

by:DougDodge
ID: 40564174
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
 
LVL 36

Accepted Solution

by:
Kimputer earned 2000 total points
ID: 40564184
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
 

Author Comment

by:DougDodge
ID: 40564365
Interesting......

Using the code you provided it does nothing at all......
0
 
LVL 36

Expert Comment

by:Kimputer
ID: 40564378
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
 

Author Comment

by:DougDodge
ID: 40564398
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
 

Author Comment

by:DougDodge
ID: 40564431
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
 
LVL 36

Expert Comment

by:Kimputer
ID: 40564430
Okay, but usually when you're satisfied with the answer, you award the expert points :(
0
 
LVL 36

Expert Comment

by:Kimputer
ID: 40564432
Okay, but usually when you're satisfied with the answer, you award the expert points :(
0
 

Author Comment

by:DougDodge
ID: 40565662
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
 

Author Comment

by:DougDodge
ID: 40565663
I have graded this "A" twice now.....
0

Featured Post

On Demand Webinar: Networking for the Cloud Era

Ready to improve network connectivity? Watch this webinar to learn how SD-WANs and a one-click instant connect tool can boost provisions, deployment, and management of your cloud connection.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

The advancement in technology has been a great source of betterment and empowerment for the human race, Nevertheless, this is not to say that technology doesn’t have any problems. We are bombarded with constant distractions, whether as an overload o…
Gain an elementary understanding of Blockchain technology.
The viewer will learn how to edit text. This includes Font, Spacing, Resizing, Color, and other special text options.
This video shows and describes the main difference between both orientations in Microsoft Word. Viewers will understand when to use each orientation and how to get the most out of them.

762 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question