As the number of generated typos can be quite large, the proposition below is for original words inserted in first row of the sheet (not in column A - use copy and paste special with transpose).
I used just 4 types of typos - missing letter, Czech mistake (error in sequence of two neighbours), random replacement of one letter and random inserton of one letter. Of course one can use many more of them.
See the working model in attachment, and the code below:
Sub typogenerator()
Dim i As Long, j As Integer, l As Integer, k As Long, proper As String
Dim typos() As String
Application.ScreenUpdating = False
ReDim typos(1 To 1)
For i = 1 To Cells(1, Columns.Count).End(xlToLeft).Column
k = 1
proper = Cells(1, i)
'missed one letter
For j = 1 To Len(proper)
ReDim Preserve typos(1 To k)
typos(k) = Left(proper, j - 1) & Mid(proper, j + 1)
k = k + 1
Next j
'Czech mistake
For j = 1 To Len(proper) - 1
ReDim Preserve typos(1 To k)
typos(k) = Left(proper, IIf(j > 1, j - 1, 0)) & Mid(proper, j + 1, 1) & Mid(proper, j, 1) & Mid(proper, j + 2)
k = k + 1
Next j
'any character replaced with random one
For j = 1 To Len(proper)
For l = 97 To 122 ' you may wish to try also 32 To 126
ReDim Preserve typos(1 To k)
typos(k) = Left(proper, j - 1) & Chr(l) & Mid(proper, j + 1)
k = k + 1
Next l
Next j
'random char inserted on any position between original
For j = 1 To Len(proper) + 1
For l = 97 To 122 ' you may wish to try also 32 To 126
ReDim Preserve typos(1 To k)
typos(k) = Left(proper, j - 1) & Chr(l) & Mid(proper, j)
k = k + 1
Next l
Next j
'add next typos here similar way if you need
'write horizontal array in vertical way into a sheet
Cells(2, i).Resize(k - 1, 1).Value = Application.Transpose(typos)
'remove duplicates, because inserting _a_ into Adam can leed to Ad_a_am and Ada_a_m etc.
Cells(1, i).Resize(k, 1).RemoveDuplicates Columns:=1, Header:=xlNo
Next i
End Sub
Bookmarks