I am not sure if this is going to be the most efficient way... but based on assumption that the first line of each block is "Product Description", see if this works:
Code:
=IFERROR(INDEX(INDEX('Main Specs'!$B$1:$B$3989,SMALL(IF('Main Specs'!$A$1:$A$3989="Product Description",ROW('Main Specs'!$A$1:$A$3989)-ROW('Main Specs'!$A$1)+1),ROWS($A$1:$A1)),0):INDEX('Main Specs'!$B$1:$B$3989,IFERROR(SMALL(IF('Main Specs'!$A$1:$A$3989="Product Description",ROW('Main Specs'!$A$1:$A$3989)-ROW('Main Specs'!$A$1)+1),ROWS($A$1:$A2)),3989),0),SMALL(IF(INDEX('Main Specs'!$A$1:$A$3989,SMALL(IF('Main Specs'!$A$1:$A$3989="Product Description",ROW('Main Specs'!$A$1:$A$3989)-ROW('Main Specs'!$A$1)+1),ROWS($A$1:$A1)),0):INDEX('Main Specs'!$A$1:$A$3989,IFERROR(SMALL(IF('Main Specs'!$A$1:$A$3989="Product Description",ROW('Main Specs'!$A$1:$A$3989)-ROW('Main Specs'!$A$1)+1),ROWS($A$1:$A2)),3989),0)=R$4,ROW(INDEX('Main Specs'!$B$1:$B$3989,SMALL(IF('Main Specs'!$A$1:$A$3989="Product Description",ROW('Main Specs'!$A$1:$A$3989)-ROW('Main Specs'!$A$1)+1),ROWS($A$1:$A1)),0):INDEX('Main Specs'!$B$1:$B$3989,IFERROR(SMALL(IF('Main Specs'!$A$1:$A$3989="Product Description",ROW('Main Specs'!$A$1:$A$3989)-ROW('Main Specs'!$A$1)+1),ROWS($A$1:$A2)),3989),0))-MIN(ROW(INDEX('Main Specs'!$B$1:$B$3989,SMALL(IF('Main Specs'!$A$1:$A$3989="Product Description",ROW('Main Specs'!$A$1:$A$3989)-ROW('Main Specs'!$A$1)+1),ROWS($A$1:$A1)),0):INDEX('Main Specs'!$B$1:$B$3989,IFERROR(SMALL(IF('Main Specs'!$A$1:$A$3989="Product Description",ROW('Main Specs'!$A$1:$A$3989)-ROW('Main Specs'!$A$1)+1),ROWS($A$1:$A2)),3898),0)))+1),1)),"")
confirmed with CTRL+SHIFT+ENTER and copied down.
Note: formula assumes row 3989 is last row. You will need to replace all occurances of 3989 in formula to last row of your database (do not use larger than necessary, due to declined efficiency).
Bookmarks