Let's analyze the formula in Sheet2!A2
Code:
OFFSET(Sheet1!$A$1;4*(ROW()-ROW($A$1))+0;0)
Offset returns a value a number of rows and columns from anchor cell;
1) The anchor cell here is Sheet1!$A$1. (NB! This is an absolute reference, so the anchor cell is always same when the formula is copied down.);
2) (ROW()-ROW($A$1)) returns 1 when the formula is 2nd row, 2 when the formula is in 3rd row, etc., i.e. it returns the number of current datarange row for the cell with formula;
3) 4 is the number of rows used for single product in Sheet1. When you multiply it with datarange row number in sheet2, you get the number of row which is 1 less than according product name in sheet1;
4) Adding 0 to previous number gives the number which you have to add to row number (1) of anchor cell to get the row number of product name from sheet1, With this, the 2nd parameter of OFFSET formula <4*(ROW()-ROW($A$1))+0> is covered - you get values from Sheet1 rows 5, 9, 13, etc.;
5) As all data in Sheet1 are in column A, the last parameter will be always 0.
To get quantity values, you have to get values one cell below product names. For this all remains same as above, except in p. 4) you have to replace 0 with 1. And for ItemPrice 0 with 2, etc.