How to bring down row data into a new row based on specific condition (in a DT)


So I am working with some excel data. We only want to see data from a range of A-P, however, if there are multiple invoices for a particular customer they will put them into Q R S. But we only want a range of A-P so normally the person will insert rows and add those invoices in right under and they will copy and paste the data from A-O so all of them are the same but they will have different invoice numbers in P.

To make it clearer lets say A1-P1 has an invoice in Q1 R1 S1. The accountant would then insert row and paste Q1 to P2, R1 to P3, S1 to P4. Since these invoices all have the same part number information (listed in A1-O1) they will simply copy it down.
There is data from A1-P1000 hence why we are inserting rows.

My current strategy was to read it into a Dt, do a for each with an if condition of if there is data in Q1 then insert row (@the rowidx+1), and write Q1 data into P2 (defined by adding 1 to rowidx). then nesting another if to check if there is data in R1 if so then do all of the same except rowidx +2, etc.

I haven’t tested it yet but I think it MIGHT work, but I am currently trying to figure out how to copy and then paste the data from A1-O1 down onto A2-O2. I was thinking a way of basically copying the entire row 1:1 and pasting it down to 2:2 then overwriting P2 with the data Q2.

Does anyone have a better approach to bringing down the row data OR is this basically my only option OR is there a better way to solve this problem that is probably easier.