Frank,
>I'll see if I can understand what the code is doing. At this point in time I don't know the size of the tables I'll be dealing with either.
it scans your table to merge in order of the key field, it uses laData to hold all the merged columns until the key field changes then it pushes the laData array out to the new destination. if the key field is the same it just stuffs the non-empty values for the 2nd through Nth rows (via the laAddRow array) over the top of the laData element. Now if you have multiple rows that have values for field2 the last non-empty one wins, that may or may not be what you want.