Never one to just leave a problem alone, I randomised the Array.
I wrote a simple formula to return the row number corresponding to a single value held in a cell. I then turned the formula into a Lambda function in order to be able to pass the cell reference as an argument. Passing a multicell array matches each value but sums the row numbers so is not useful.
That is where the going gets heavy. I believe that sooner or later there will be a built in MAP function that will run through a range or array and return an array comprising the results drawn from each cell in turn. Since the function does not exist at present, I emulated it using a recursive Lambda function (MAP). This takes both the array and the lambda function I wish to apply to the range as parameters.
Once I have the result as an array, I can further process it, in this case to use the SORT function to sort the columns.