My Goal: To get all data about the same subject from multiple reports (already in the same spreadsheet) in the same row.
Rambling Backstory: Every month I get a new datadump Excel spreadsheet with several reports of variable lengths side-by-side (across columns). Most of these reports have overlapping subjects, but not entirely. Fortunately, when they are talking about the same subject, it is noted by a number. This number tag is always the first column at the beginning of each report. However, because of the variable lengths of reports, the same subjects are not in the same rows. The columns with the numbers never shift (report1’s numbers are always column A, report2’s are always column G, etc) and numbers are always in ascending order.
My Goal Solution: Since the columns with the ascending numbers do not change, I’ve been trying to write VBA code for a Macro that compares (for example) the number of the active datarow with from column A with Column G. If the number is the same, do nothing, else move all the data in that row (and under it) from columns G:J down a line. Then move on to the next datarow.
I’ve tried: I’ve written several “For Each”s and a few loops with DataRow + 1 to and calling what I thought would make the comparisons, but they’ve all failed miserably. I can’t tell if I’m just getting the syntax wrong or its a faulty concept. Also, none of my searches have turned up this problem or even parts of it I can maraud and cobble together. Although that may be more of a reflection of my googling skill 🙂
Any and all help would be appreciated!
Note: In case it’s important, the columns have headers. I’ve just been using DataRow = Found.Row + 1 to circumvent. Additionally, I’m very new at this and self-taught, so please feel free to explain in great detail
I think I understand your objective and this should work. It doesn’t use any of the methodology you were using as reading your explanation I had a good idea how to proceed. If it isn’t what you are looking for my apologies.
It starts at a predefined column (see FIRST_ROW constant) and goes row by row comparing the two cells (MAIN_COLUMN & CHILD_COLUMN). If MAIN_COLUMN < CHILD_COLUMN it pushes everything between SHIFT_START & SHIFT_END down one row. It continues until it hits an empty row.
I modified the code to work as a macro. You should be able to create it right from the macro dialog and run it from there also. Just paste the code right in and make sure the Sub and End Sub lines don’t get duplicated. It no longer accepts a worksheet name but instead runs against the currently active worksheet.