How can you randomise a range in Google Sheets without needing a plugin or Google App Script?

To randomise a range, simply use the RAND() formula in a column to set the random numbers for each element in your range, and then with the INDEX() and RANK() formulas combined, produce the new random range.

Here’s an example of what this looks like in a Google Sheet spreadsheet starting with the range you’d like to randomise.

For the sake of this first example I’m using a simple range with one column of data:

A
1Apple
2Carrot
3Banana
4Tomato

Simple range of data

Step 1: RAND() For Each Cell

The first step is to generate a random number for each cell in the range. Google Sheets has a function called RAND(), which generates a random number between 0 and 1.

Place this random range alongside your range, which would make my working example above look something like this:

AB
1Apple=RAND() 0.4929732072
2Carrot=RAND() 0.239103801
3Banana=RAND() 0.0898711001
4Tomato=RAND() 0.9137103201

On an adjacent column insert the RAND() formula for each cell.

You could further add a conditional IF() formula if you wanted to check there was a value in the cell, for example, something like this:

=IF(LEN(A1),RAND(),)

This formula simply means that if there is a value in the cell A1 range to generate a random number using the RAND() function, otherwise do nothing. This formula would then be copied down to the remaining cells beneath.

Step 2 – Use INDEX() And RANK() To Generate Random Range

The final step is to create your random range, which is achieved using the INDEX() and RANK() formulas together.

The combined formula is as follows:

=INDEX(original_range,RANK(random_cell_value,random_range))

Here is how this formula would look in the worked example:

ABC
1Apple0.4929732072=INDEX($A$1:$A$4,RANK(B1,$B$1:$B$4)) Tomato
2Carrot0.239103801=INDEX($A$1:$A$4,RANK(B2,$B$1:$B$4)) Apple
3Banana0.0898711001=INDEX($A$1:$A$4,RANK(B3,$B$1:$B$4)) Carrot
4Tomato0.9137103201=INDEX($A$1:$A$4,RANK(B4,$B$1:$B$4)) Banana

Insert the random range wherever needed.

As you can see from the final output in column C the new range produces a randomised range of the original.

You can explore a copy of this spreadsheet here with the public Google Sheet here:

Randomise Range: Google Sheet

Summary

To randomise a range in Google Sheets without using a plugin or scripting something up with Google App Script simply create a RAND() range for every cell and then create your random range with INDEX(original_range,RANK(random_cell_value, random_range)).