You can create permutations by implementing a counter that cycles through your lists until it reaches the end.
For example let's say your lists are in columns A and B, and you want an array of possible permutations in column C.
Start with an if statement to bound your data. If the index of the current row minus the first row plus 1 is greater than the count of possible permutations, then we can leave that cell blank, otherwise, we want to return one of the permutations.
=IF(ROW()-ROW($C$1)+1>
COUNTA(A:A)*COUNTA(B:B),
"",
Now we need to create our counter. To do so, we will use the INDEX formula combined with the INT formula. Here we are essentially saying, look at list A, loop through it according to list B, and if we reach the end of list B, go on to the next value in list A, restart. This will give us an output of every value in list A multiplied by the number of values in list B.
INDEX(A:A,INT((ROW()-ROW($C$1))/COUNTA(B:B)+1))
If you need a text separator for the permutations between the lists, you can use the & symbol.
&" | "
Now that we have the number of possibilities for list A, we can join list B. Using the INDEX function and MOD function, we can loop through list B and print its values until there are no permutations left to print.
&INDEX(B:B,MOD(ROW()-ROW($C$1),COUNTA(B:B))+1))
Your function would look like this:
=IF(ROW()-ROW($C$1)+1>COUNTA(A:A)*COUNTA(B:B),"",INDEX(A:A,INT((ROW()-ROW($C$1))/COUNTA(B:B)+1))&" | "&INDEX(B:B,MOD(ROW()-ROW($C$1),COUNTA(B:B))+1))
The same concept can be applied to additional columns; simply modify the counter to account for additional permutations.
For more than two lists, you need to take a different approach with your counter. Try this formula out in Excel. With lists in columns A, B and C, place this formula in column D and drag down to the number of possible permutations:
=IF(ROW()-ROW($D$1)+1>COUNTA(A:A)*COUNTA(B:B)*COUNTA(C:C),"",INDEX(A:A,MOD(INT(INT((ROWS($1:1)-1)/COUNTA(A:A))/COUNTA(B:B)),COUNTA(C:C))+1)&" | "&INDEX(B:B,MOD(INT((ROWS($1:1)-1)/COUNTA(B:B)),COUNTA(C:C))+1)&" | "&INDEX(C:C,MOD(ROWS($1:1)-1,COUNTA(C:C))+1))