IN A NUTSHELL
I have four (say) columns of data, each a Dynamic/Spilled Array. I'd like to "stack" them into another column so as to produce a single Dynamic/Spilled Array comprising the "splice" of the four originals.
I want to do it without VBA, and such that if the sizes of any of the four initial arrays change, it requires minimal, and ideally no change to the formulae etc being used to do the splicing.
TL;DR DETAILS
I already have a method for doing it involving the creation of a "helper" column, but it's not ideal. It works like this (example here):
- First, I choose a maximum "dimension" for the original arrays; i.e. the largest size that the largest of the four will ever need to be.
- I then create, as a helper column, a "manual" stacking of the four original arrays. But I do that such that they now each take up not their original sizes, but that maximum dimension I chose. (So in my typical use case at least, where the four originals are often of very different sizes, there will be a lot of gaps in the helper column.)
- Finally I prune out the gaps using FILTER(). That not only prunes out the gaps but also converts the whole sorry mess into a nice, contiguous range, in the form of a Dynamic/Spilled array. Which is what I want.
That works but it has (at least) two obvious limitations:
- The need for that hard-coded maximum dimension. It fails my requirement of not having to change formulae if the initial array sizes change. Yes, my use of a max dimension gives me some immunity to that kind of resize-induced change, but only if the sizes stay WITHIN that overall maximum. I can of course increase the chances of staying within that limit by increasing the limit itself, but that has a cost in size and speed. See next point.
- The fact that a) my four initial arrays can differ widely in size, and b) for any given use case, I may only want to look at some small slice of the entire set of data, this method is very space-wasteful. The helper column can be very, very large, despite the fact that in the end I only want to look at that small slice. It's clumsy and, more important, slow.
What I'd like is, given four initial arrays rooted at C8, D8, E8, and F8 respectively (as per my attached example), to be able to shove something like this into a single cell:
=(C8#,D8#,E8#,F8#)
and have it all Just Work.
Any ideas?
P.S. I've provided my example using a link to an Excel file in DropBox. But if folk are like me, they'll not be keen on clicking random links from random dude on the internet. I know I wouldn't! (That said, this would be a helluva long-winded way of trying to drop some malware on y'all, so there's always that I suppose. :-) ) So if there's a better way to attach-or-otherwise-provide such files, I'd appreciate hearing of them.
=count(c8:c999)
in C3:F3?