# How to Generate All Permutations in Excel

Written by

Reviewed by

Last updated on December 12, 2022

*This tutorial demonstrates how to generate all permutations in Excel.*

## Generate All Permutations

Using a VBA macro, you can generate all possible permutations of a given set of characters. All you need to do is create a small piece of code and enter the input characters.

- In the
**Ribbon**, go to**Developer > Visual Basic**. If you don’t have this tab available, find out how to add the Developer tab.

- In the VBA window, go to
**Insert > Module**.

- In the code window on the right side,
**paste the following code**and**save**.

```
Sub GetString()
Dim xStr As String
Dim FRow As Long
Dim xScreen As Boolean
xScreen = Application.ScreenUpdating
Application.ScreenUpdating = False
xStr = Application.InputBox("Enter text to permute:", "Permutation", , , , , , 2)
If Len(xStr) < 2 Then Exit Sub
If Len(xStr) >= 8 Then
MsgBox "Too many permutations!", vbInformation, "Permutation"
Exit Sub
Else
ActiveSheet.Columns(1).Clear
FRow = 1
Call GetPermutation("", xStr, FRow)
End If
Application.ScreenUpdating = xScreen
End Sub
Sub GetPermutation(Str1 As String, Str2 As String, ByRef xRow As Long)
Dim i As Integer, xLen As Integer
xLen = Len(Str2)
If xLen < 2 Then
Range("A" & xRow) = Str1 & Str2
xRow = xRow + 1
Else
For i = 1 To xLen
Call GetPermutation(Str1 + Mid(Str2, i, 1), Left(Str2, i - 1) + Right(Str2, xLen - i), xRow)
Next
End If
End Sub
```

- Now you have created the
*GetString*macro, and you can run it. In the**Ribbon**, go to**Developer > Macros**.

- If it’s not already selected, select the
**macro**, and click**Run**.

- In the pop-up window,
**enter characters for permutation**(here,*abcde*), and click**OK**.

As a result, in Column A, you get all possible (120) permutations of entered characters.

In addition to the macro described above, Excel has a built in function, the PERMUT Function, which enables you to calculate how many permutations occur for any given numbers. This function only works with numbers and not with text.