Unfortunately it's not quite that simple, since it doesn't pass the translate vs replace test...

A
B Formula
B Value
B Expected
1 abcdef =translate(A1,"abc","bcd") ddddef bcddef
2 abcdef =translate2(A2,"abc","bcd") bcddef bcddef

but it can be fixed

Dim TranslateCache As Variant

Public Function translate2(InputString As String, Characters As String, Optional Translation As String = "") As String
    If IsEmpty(TranslateCache) Then Set TranslateCache = CreateObject("Scripting.Dictionary")
    Dim trans As Variant, i As Long, l As Long, c As String
    
    Dim CacheName As String: CacheName = Characters & ":" & Translation
    If Not TranslateCache.Exists(CacheName) Then
        Set trans = CreateObject("Scripting.Dictionary")
        l = Application.WorksheetFunction.Min(Len(Characters), Len(Translation))
        For i = 1 To l
            trans.Add Mid(Characters, i, 1), Mid(Translation, i, 1)
        Next i
        
        For i = l + 1 To Len(Characters)
            trans.Add Mid(Characters, i, 1), ""
        Next i
        TranslateCache.Add CacheName, trans
    Else: Set trans = TranslateCache.Item(CacheName)
    End If

    l = 1
    For i = 1 To Len(InputString)
        c = Mid(InputString, i, 1)
        If Not trans.Exists(c) Then GoTo SkipI
        If l <> i Then translate2 = translate2 & Mid(InputString, l, i - l)
        l = i + 1
        translate2 = translate2 & trans.Item(c)
SkipI: Next i
    
    If l < i Then translate2 = translate2 & Mid(InputString, l, i - l)
End Function