Typically you would represent ragged arrays as 1D arrays of cluster where each cluster contains a 1D array of strings. Now each inner array can have a different size. This has the advantage that also empty strings can be a valid value to be shuffled. 😉
wrote: ...and I'm definitely gonna clean it up some and add it to my useful VI arsenal.
Here' are some ideas. Arguably simpler. 😉 Currently it gives the same rows as yours, but in different order. That can be fixed, of course with a little more code.