Вот пользовательская функция, с которой вы можете играть.
Arg1 stringToDecode
Строка для преобразования.Вы также можете передать адрес диапазона, содержащий строку
Arg2 keys
Это часть ключей шифра.Должен передаваться в виде списка через запятую.
Arg2 values
Это соответствующая часть значений шифра.Должен передаваться в виде списка через запятую.
Option Explicit
Public Sub test()
Debug.Print GetCodedOutput([A1], "1,3,4,B,2", "Older,Tall,Richer,Bad,Boy")
End Sub
Public Function GetCodedOutput(ByVal stringToDecode As String, ByVal keys As String, ByVal values As String)
Dim arr1() As String, arr2() As String, dict As Object, i As Long, outputString As String
Set dict = CreateObject("Scripting.Dictionary")
arr1 = Split(keys, ",")
arr2 = Split(values, ",")
If UBound(arr1) <> UBound(arr2) Or stringToDecode = vbNullString Then
GetCodedOutput = CVErr(xlErrNA)
Exit Function
End If
For i = LBound(arr1) To UBound(arr1)
dict(arr1(i)) = arr2(i)
Next i
Dim outputArr(), upper As Long
upper = Len(stringToDecode)
ReDim outputArr(1 To upper)
For i = 1 To upper
On Error GoTo errhand
outputArr(i) = dict(Mid$(stringToDecode, i, 1))
Next
GetCodedOutput = Join$(outputArr, ",")
Exit Function
errhand:
GetCodedOutput = CVErr(xlErrNA)
Exit Function
End Function
UDF в листе: