Okay, I finally got some time to spend on this, and I think I've come up with a formula solution (at least for the sample)
I've added 2 attachments which are the same solution, the first works for Excel 2007+, the second for lower than 2007 (not sure how much earlier, but '97-2003 should be fine), BOTH recquire macros enabled
The first thing I did was add a helper column (column CC) to each of the 'Source Table..' sheets to Identufy which rows contained data, then a helper cell (CD2) to return the number of rows with data
Then, on the 'Result Data' sheet, I added 5 helper columns (columns CF-CJ)
Column CF returns ALL the sheet names in the workbook using the Named Formula 'Sheets', which refers to =REPLACE(GET.WORKBOOK(1),1,FIND("]",GET.WORKBOOK(1)),"") (GET.WORKBOOK is a built in macro, for now at least
) (Note - I added some blank sheets to simulate a full workbook)
Column CG returns the sheet names of the 'Source Table...' sheets
Column CH returns the same as CG, but with no blanks betweeen
Column CI returns the company name
Column CJ returns how many rows have data from the 'Source Table...' sheet (I have added some dummy data into the tables of each sheet to show multiple matched PO's in several sheets)
Column D returns the company name for as many rows as the 'Source Table...' for that company has data
Columns E-CB returns the data for the company in column D
I used CF to create a Line to define the bottom of the table for easy reference
The Difference between the two attachments:
In first Attachment (2007 +), I did not use any VBA
In second Attachment (lower than 2007), I replaced the IFERROR() functions with this VBA UDF:
Function IfErrorC(Arg1, Arg2)
If IsError(Arg1) Then
IfErrorC = Arg2
Else
IfErrorC = Arg1
End If
End Function
Hope this helps 
EDIT -
(***NOTE***) These formulas rely on the way the sample is setup, to make it more adaptable would require far more complex formulas
Bookmarks